Задачи модульного тестирования возникают на разных этапах разработки программного обеспечения: от первоначальной реализации проекта до его обслуживания и последующих доработок. Эти задачи различаются по своей сложности и назначению и соответственно по-разному подходят разным разработчикам. Широкий спектр задач в проблемной области приводит к тому, что многие требования (иногда противоречивые) размещаются в рамках модульного тестирования. К ним относятся:
Рамки должны позволять продвинутым пользователям выполнять нетривиальные тесты.
Тестовый модуль должен иметь много небольших тестовых корпусов, а разработчик должен иметь возможность сгруппировать их в тестовые наборы.
В начале разработки пользователи хотят видеть многословные и описательные сообщения об ошибках.
Во время регрессионного тестирования пользователи просто хотят знать, провалились ли какие-либо тесты.
Для небольших тестовых модулей их время выполнения должно преобладать над временем компиляции: пользователь не хочет ждать минуту, чтобы составить тест, который занимает секунду для запуска.
Для длительных и сложных тестов пользователи хотят видеть прогресс тестирования.
Простейшие тесты не требуют наличия внешней библиотеки.
Для долгосрочного использования пользователи Unit Test Framework должны иметь возможность создавать его как отдельную библиотеку.
Unit Test Framework удовлетворяет вышеуказанным требованиям и обеспечивает универсальные возможности для: