问题标签 [junit5]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
767 浏览

junit - JUnit 5 老式未在嵌套静态类中运行测试

我有 JUnit 4 测试,我正在尝试使用 JUnit 5 Vintage 运行。

我在嵌套的静态类中有很多测试。顶级类中的测试运行良好,但嵌套类中的测试不运行。

例如:

我尝试设置junitPlatform.filters.includeClassNamePatterns'^.*Tests?$', '^.*Tests?\$.*$'但没有奏效。

0 投票
3 回答
21175 浏览

junit5 - Eclipes 中的“添加 JUnit 库”没有“Junit 5”选项

谁能帮我在eclipse中添加Junit 5?当我创建 java 项目并添加 junit 库时,它只显示 Junit3 和 junit4。我没有找到junit5,也不知道如何设置才能在项目中使用Junit5。我也浏览了本指南,但不明白在 Eclipse 中在哪里设置这些代码。

谁能帮助我一步一步地在 eclipse-neon 中实现 Junit5 测试?

0 投票
2 回答
1140 浏览

java - JUnit 5 在 TestFactory 注解之前

我已经@TestFactory在 J​​Unit5 中编写了一个动态测试,现在我看到我不能@Before为动态测试做,参考 JUnit 5 User Guide - Writing Test Annotations

在 TestFactory 之前是否有任何解决方法可以执行@Before或类似操作?

我想加入的方法,@Before因为它只是初始化的东西:

解决方案:

在动态测试中使用@BeforeAll/@AfterAll是可能的。参考 改进 DynamicTest 生命周期的文档

动态测试生命周期

@Test动态测试的执行生命周期与标准案例的执行生命周期完全不同。具体来说,动态测试没有任何生命周期回调。这意味着动态测试不会执行@BeforeEach@AfterEach方法及其相应的扩展回调。换句话说,如果您从 lambda 表达式中的测试实例访问动态测试的字段,这些字段将不会被回调方法或由同一@TestFactory方法生成的动态测试的执行之间的扩展重置。

0 投票
2 回答
2543 浏览

java - 如何在 JUnit5 中测试引发异常?

我想测试异常是否正常工作JUnit5

例如,假设我测试队列。

测试类

我在谷歌搜索它,但只有答案JUnit4@Test(expected=NoPermissionException.class)

但它不起作用JUnit5

我该如何处理?

0 投票
1 回答
3599 浏览

gradle - 如何在 junit 5 gradle 测试报告中捕获 stdout/stderr?

我的 gradle 项目使用 junit 5,我试图让测试报告显示在我的构建服务器上。XML 报告基本上看起来不错——它包含所有测试类和方法,但缺少测试方法中打印的 stdout/stderr。只有一些 CDATA 包含测试元数据。

XML 报告:

是否有设置告诉 gradle 插件捕获 stdout/stderr?我环顾四周http://junit.org/junit5/docs/current/user-guide/#running-tests-build但找不到任何东西。

我正在使用org.junit.platform:junit-platform-gradle-plugin:1.0.0-M3org.junit.jupiter:junit-jupiter-{api,engine}:5.0.0-M3

0 投票
2 回答
25741 浏览

java - 当 JUnit 5 没有 assertThat() 函数时,如何将 Hamcrest 与 JUnit 5 一起使用?

要将 Hamcrest 与 JUnit 4 一起使用,我们使用一个assertThat()函数。但是,JUnit 5 将不再具有assertThat()功能。如何在没有 的情况下使用 Hamcrest assertThat()

0 投票
7 回答
52709 浏览

java - 在 JUnit 5 中,如何在所有测试之前运行代码

注释标记了在类@BeforeAll中的所有测试之前运行的方法。

http://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations

但是有没有办法在所有测试之前在所有类中运行一些代码?

我想确保测试使用一组特定的数据库连接,并且这些连接的全局一次性设置必须在运行任何测试之前发生。

0 投票
1 回答
2801 浏览

java - 如何在 JUnit5 中实现自定义运行器

是否有某种方法可以完全控制 JUnit5 中测试方法(包括之前/之后方法)的执行,类似于 JUnit4 @RunWith 注释)?

我正在尝试构建一个 JUnit5 Arquillian 扩展,但由于 Aquillian 基本上需要在容器中执行每个测试,所以在从 Junit5 扩展运行 Arquillian 时遇到了问题。

我的代码在这里:BasicJunit5ArquillianTest.java

测试应该在单独的容器中运行所有方法(包括之前/之后),该容器可以是单独的 JVM、远程或嵌入式服务器或任何隔离的东西。我的扩展从 beforeEach 挂钩运行测试方法,使用 Arquillian 传输测试类并使用LauncherFactory.create()在容器中运行它,收集测试结果并将它们传回。

问题是测试方法被执行了两次——通过正常的 JUnit5 执行和通过我的来自 beforeEach 钩子的 Arquillian 扩展。我只想通过 Arquillian 运行测试并跳过方法的正常执行。

这在 JUnit5 扩展中是否可行?或者我需要创建一个自定义测试引擎,可能扩展 Jupiter 测试引擎?

0 投票
0 回答
552 浏览

java - 带有 JUnit 5.0.0-M4 NullPointerException 的 JMockit 1.31

以下代码在 Expectations 块在线给出 NullPointerException myInterface.method(anyInt); result = 1;

堆栈跟踪:

如果我理解正确,JMockit 应该制作某种实现的代理对象MyInterface,但变量myInterfacenull. 我是否需要额外的步骤来“初始化”myInterface变量。我也尝试了@Mocked@Injectable注释,但我得到了相同的结果。

更新: 代码适用于 JUnit 5 M1、M2 和 M3。

更新: 带有 JUnit 5.0.2 的 JMockit 1.36 按预期工作。

0 投票
2 回答
1213 浏览

gradle - 如何使用 Gradle 运行特定(超出构建周期)Junit5 测试

我正在将测试转移到将与 Gradle 一起运行的 junit5。在我使用的一个项目中,有单元测试和一些必须按需运行的特定测试(我想来自特定的 Gradle 任务)。

单元测试很清楚。Gradle 插件添加了对此的支持。但是我找不到一种方法来为我的需要定义另一个测试任务,我在 Junit5 插件源中搜索并发现没有任何特定的类用于该目的。Gradle 插件只是设置一个 JavaExec 任务然后运行它。

因此,似乎没有可见的方法来定义我自己的内置类型任务

task myTask(type: Junit5TestRunner) 这里我们设置一个任务

有什么想法可以做到吗?