运行多个没有依赖关系的JUnit5测试用例

时间:2018-11-01 22:26:22

标签: junit5

我想知道如何执行一些单个文件或实体,这些文件或实体知道我现在要运行JUnit 5案例的指定列表吗?

我知道即将推出JUnit5,这类似于测试套件,但是显然它们现在不可用,并且在不久的将来期待它们可能过于乐观了。我现在已经积累了一些测试,还有更多测试,不得不单独启动每个测试变得很乏味,而且随着测试数量的增加,情况只会变得更糟。我今天可以编写任何代码来一次自动运行多个测试吗?那将使我度过难关,直到即将发布的代码可用为止。 :-)

我不需要任何花哨的东西,只是提供了我想一次运行的JUnit5测试用例列表的一种方法。测试不必按指定的顺序运行,我很乐意将名称硬编码在某种列表中。我不需要GUI就能使它变得优雅,因为我可以等待。

我将Windows 10上的Eclipse 2018-19作为我的IDE,但是如果我需要打开命令提示符或使用其他工具启动测试,则现在可以使用它。

我一直在尝试自己拼凑一些东西,但这似乎超出了我的能力范围。

1 个答案:

答案 0 :(得分:0)

您可以使用CLI选项

  -c, --select-class=CLASS   Select a class for test discovery.
                             This option can be repeated.
  -m, --select-method=NAME   Select a method for test discovery.
                             This option can be repeated.
ConsoleLauncher

,通过编程方式或通过独立的JAR进行,如下所述:https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher

这是经过修改的Gradle code snippet,可从JUnit 5用户指南项目中选择3个测试用例:

val consoleLauncherTest by tasks.creating(JavaExec::class) {
    dependsOn("testClasses")
    val reportsDir = file("$buildDir/test-results")
    outputs.dir(reportsDir)
    classpath(sourceSets["test"].runtimeClasspath)
    main = "org.junit.platform.console.ConsoleLauncher"

    // "select all classes available" via args("--scan-classpath") or
    // supply a set of classes via "--select-class":

    args("--select-class", "example.JUnit4Tests")
    args("--select-class", "example.FirstJUnit5Tests")
    args("--select-class", "example.DisplayNameGeneratorDemo")

    args("--details", "tree")
    args("--include-classname", ".*Tests")
    args("--include-classname", ".*Demo")
    args("--exclude-tag", "exclude")
    args("--reports-dir", reportsDir)
    systemProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager")
}