После времени исследования я нашел решение. Если у меня есть пример теста:
import utest._
object SampleTests extends TestSuite {
val tests:Tests = Tests {
var x = 0
'outer1 - {
x += 1
'inner1 - {
x += 2
assert(x == 3) // 0 + 1 + 2
x
}
'inner2 - {
x += 3
assert(x == 4) // 0 + 1 + 3
x
}
}
'outer2 - {
x += 4
'inner3 - {
x += 5
assert(x == 9) // 0 + 4 + 5
x
}
}
}
def main(args: Array[String]): Unit = {
val results = TestRunner.runAndPrint(SampleTests.tests, "SampleTests")
}
}
Важно то, что есть основная функция, которая вызывает метод TestRunner с параметром типа Tests. Этот параметр может быть значением или методом, определенным с помощью def.
Кроме того, тестовый код должен находиться внутри местоположения тестового источника (тест вместо основного).
Для запуска этого кода вам необходимо изменить файл build.gradle. Там вы можете вставить определенную пользователем задачу, например:
task microTest(type: JavaExec) {
main = 'package.SampleTests'
classpath = sourceSets.test.runtimeClasspath
}
Конечно, вам нужно объявить зависимость внутри build.gradle для тестовой среды:
testImplementation "com.lihaoyi:utest_2.a:x.y.z"
Fazit:
Существует способ запустить тесты с помощью
./gradlew microTest
или щелкнуть мышью внутри вашей IDE в указанной задаче Gradle. Вывод микротестов тестовой среды будет выведен на консоль ожидаемым образом. Но когда вы вызываете эту задачу косвенно, определяя следующую строку внутри build.gradle:
test.finalizedBy microTest
с щелчком по тестовому заданию в IDE (Intellij), тогда цветной вывод заменяется специальными символами.
При отсутствии щелчка (ввод командной строки: ./gradlew test) весь вывод печатается правильно.