В семействе фреймворков семейства xUnit существуют очень хорошо разработанные соглашения для модульного тестирования, изначально производные от jUnit. В этих рамках утверждение является основным средством проведения теста. В тестовом наборе цель состоит в том, чтобы убедиться, что 100% ваших утверждений верны.
Рассмотрим ваш пример.
CheckForDuplicateSubdomains(){
get all users in DB with matching subdomains
if greater than zero, fail test
}
Этот тест обычно имеет имя, начинающееся с «test», что позволяет исполнителю тестов среды знать, что эта функция, скажем, тест, а не метод настройки. Важно понимать, что мы тестируем поведение кода, а не состояние данных .
testNoDuplicateSubdomains(){
}
В каждом тесте есть четыре фазы :
- настройка прибора,
- упражнение SUT,
- проверка результата и
- демонтаж светильника.
SUT - это «тестируемая система», которая обычно является одним из методов класса в вашем производственном коде.
testNoDuplicateSubdomains(){
// fixture setup
prepareDatabaseTestData()
// exercise SUT,
SUT = new ProductionObject()
result = SUT.getAllUsersWithMatchingSubDomains()
// result verification and
assertEmpty(result) // or whatever makes sense
// fixture teardown.
removeDatabaseTestData()
}
Как и во многих методах разработки программного обеспечения, для написания юнит-тестов требуется время. Хороший ресурс для изучения лучших практик - это xUnit Test Patterns от Gerard Meszaros.