Запуск Groovy тестовых случаев с JUnit 5 - PullRequest
0 голосов
/ 22 октября 2018

Может быть, это очень просто, но я не смог найти примеров в Интернете:

Я бы хотел использовать JUnit 5 для запуска модульного теста, реализованного как класс Groovy.Моя текущая настройка, кажется, запускает JUnit 5, но не в состоянии обнаружить контрольный пример.IntelliJ распознает тест, но не может его запустить.Если я добавлю модульный тест Java, он будет запущен правильно.

Вот что у меня сейчас:

Структура проекта

src
  main
    groovy
      # production code
  test
    groovy
      UnitTest.groovy
build.gradle
...

build.gradle

plugins {
    id 'groovy'
}

dependencies {
    compile localGroovy()

    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.1.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.1.1'
}

test {
    useJUnitPlatform()
}

UnitTest.groovy

import org.junit.jupiter.api.Test

class UnitTest {

    @Test
    def shouldDoStuff() {
        throw new RuntimeException()
    }
}

Я использую Gradle 4.10.

Есть идеи?

1 Ответ

0 голосов
/ 22 октября 2018

JUnit требует, чтобы все методы тестирования использовали тип возврата void.Ключевое слово Groovy def скомпилировано в тип Object, поэтому ваш метод компилируется примерно так в Java:

import org.junit.jupiter.api.Test

public class UnitTest {

    @Test
    Object shouldDoStuff() {
        throw new RuntimeException();
    }
}

Если вы попробуете это как тест Java, он не найдетни тестовый примерРешение очень простое - замените def на void, и ваш контрольный пример Groovy будет выполнен правильно.


src / test / groovy / UnitTest.groovy

import org.junit.jupiter.api.Test

class UnitTest {

    @Test
    void shouldDoStuff() {
        throw new RuntimeException()
    }
}

Демо:

asciicast

...