Groovy для тестирования API
Я пишу серию автоматизированных сквозных тестовых примеров, в которых используется API RestFUL.
У меня есть несколько хороших тестовых сценариев, написанных на Groovy, которые предоставляют такие тесты и обеспечивают необходимую нам уверенность, и мы стремимся интегрировать их в ночную сборку, а также позволить команде QA их запускать. Это шаг над модульным тестированием, так как мы рассматриваем полные сквозные рабочие процессы, а не атомарные этапы.
Вывод в настоящее время доступен для чтения человеком, при этом каждое условие теста выводит строку, которая определяет тест, читаемое значение и значение true/false, чтобы показать, что условие теста прошло.
Я хотел бы обернуть это в скрипт более высокого уровня, который вызывает каждый скрипт в отдельности, а затем анализирует результаты. Я сам могу сделать это достаточно легко, но мне было интересно, есть ли там уже среда Groovy Test, поэтому я не изобретаю колесо заново.
2 ответа
JUnit, TestNG и Spock - все разумные варианты для написания (а не только модульных) тестов в Groovy. Выберите один из них и запустите тесты с выбранной системой сборки. Система сборки, такая как Gradle, которая может загружаться сама, облегчит жизнь для QA (установка не требуется).
Отказ от ответственности: я основатель Спока и коммиттер Gradle.
Я использую Groovy для этого тоже. Я только что написал тестовые примеры JUnit 4 в Groovy, а затем написал свой собственный скрипт-бегун groovy, который собирает результаты и распечатывает их для меня. Это скрипт для вызова тестов JUnit 4 Groovy:
def (Result result, Duration duration) = time {
JUnitCore.runClasses(TestA, TestB, TestC)
}
String message = "Ran: " + result.getRunCount() + ", Ignored: " + result.getIgnoreCount() + ", Failed: " + result.getFailureCount()
println ""
println "--------------------------------------------------"
println "Tests completed after " + duration
println "--------------------------------------------------"
if (result.wasSuccessful()) {
println "SUCCESS! " + message
println "--------------------------------------------------"
} else {
println "FAILURE! " + message
println "--------------------------------------------------"
result.getFailures().each {
println it.toString()
}
println "--------------------------------------------------"
}
def time(closure) {
DateTime start = new DateTime()
Object result = closure()
[result, new Duration(start, new DateTime())]
}
Я написал этот сценарий, потому что в то время я не мог найти многоразового бегуна JUnit 4 для Groovy. Может быть один сейчас, но это работает для меня.