Интегрируйте µTest (микротест) для Scala в проект Gradle

Я использую Gradle для своих проектов Scala и немного расстроен документацией по scalatest. Поэтому я начал поискать альтернативный фреймворк. Единственное, что я нашел, это µTest (микротест). Но пока мне не удалось найти способ интегрировать µTest в Gradle.

1 ответ

После долгих исследований я нашел решение. Если у меня есть образец теста:

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.

Кроме того, тестовый код должен находиться внутри местоположения источника теста (test вместо main).

Для запуска этого кода вам необходимо изменить файл build.gradle. Там вы можете вставить определенную пользователем задачу следующим образом:

task microTest(type: JavaExec) {
    main = 'package.SampleTests'
    classpath = sourceSets.test.runtimeClasspath
}

Конечно, вам нужно объявить зависимость внутри build.gradle от тестовой среды:

testImplementation "com.lihaoyi:utest_2.a:x.y.z"

Фазит:

Есть способ запустить тесты с

./gradlew microTest

или щелкните мышью внутри своей IDE по указанной задаче gradle. Результат микротеста тестовой среды будет напечатан на консоли ожидаемым образом. Но когда вы вызываете эту задачу косвенно, определяя следующую строку внутри build.gradle:

test.finalizedBy microTest

при щелчке по тестовой задаче в среде IDE (Intellij) цветной вывод заменяется специальными символами.

Если не щелкать (вводя командную строку: ./gradlew test), весь вывод печатается правильно.

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