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. Может быть один сейчас, но это работает для меня.

Другие вопросы по тегам