问题标签 [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.
junit - JUnit 5 老式未在嵌套静态类中运行测试
我有 JUnit 4 测试,我正在尝试使用 JUnit 5 Vintage 运行。
我在嵌套的静态类中有很多测试。顶级类中的测试运行良好,但嵌套类中的测试不运行。
例如:
我尝试设置junitPlatform.filters.includeClassNamePatterns
,'^.*Tests?$', '^.*Tests?\$.*$'
但没有奏效。
junit5 - Eclipes 中的“添加 JUnit 库”没有“Junit 5”选项
谁能帮我在eclipse中添加Junit 5?当我创建 java 项目并添加 junit 库时,它只显示 Junit3 和 junit4。我没有找到junit5,也不知道如何设置才能在项目中使用Junit5。我也浏览了本指南,但不明白在 Eclipse 中在哪里设置这些代码。
谁能帮助我一步一步地在 eclipse-neon 中实现 Junit5 测试?
java - JUnit 5 在 TestFactory 注解之前
我已经@TestFactory
在 JUnit5 中编写了一个动态测试,现在我看到我不能@Before
为动态测试做,参考
JUnit 5 User Guide - Writing Test Annotations。
在 TestFactory 之前是否有任何解决方法可以执行@Before
或类似操作?
我想加入的方法,@Before
因为它只是初始化的东西:
解决方案:
在动态测试中使用@BeforeAll
/@AfterAll
是可能的。参考
改进 DynamicTest 生命周期的文档
动态测试生命周期
@Test
动态测试的执行生命周期与标准案例的执行生命周期完全不同。具体来说,动态测试没有任何生命周期回调。这意味着动态测试不会执行@BeforeEach
和@AfterEach
方法及其相应的扩展回调。换句话说,如果您从 lambda 表达式中的测试实例访问动态测试的字段,这些字段将不会被回调方法或由同一@TestFactory
方法生成的动态测试的执行之间的扩展重置。
java - 如何在 JUnit5 中测试引发异常?
我想测试异常是否正常工作JUnit5
。
例如,假设我测试队列。
测试类
我在谷歌搜索它,但只有答案JUnit4
:
@Test(expected=NoPermissionException.class)
但它不起作用JUnit5
。
我该如何处理?
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-M3
和org.junit.jupiter:junit-jupiter-{api,engine}:5.0.0-M3
。
java - 当 JUnit 5 没有 assertThat() 函数时,如何将 Hamcrest 与 JUnit 5 一起使用?
要将 Hamcrest 与 JUnit 4 一起使用,我们使用一个assertThat()
函数。但是,JUnit 5 将不再具有assertThat()
功能。如何在没有 的情况下使用 Hamcrest assertThat()
?
java - 在 JUnit 5 中,如何在所有测试之前运行代码
注释标记了在类@BeforeAll
中的所有测试之前运行的方法。
http://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations
但是有没有办法在所有测试之前在所有类中运行一些代码?
我想确保测试使用一组特定的数据库连接,并且这些连接的全局一次性设置必须在运行任何测试之前发生。
java - 如何在 JUnit5 中实现自定义运行器
是否有某种方法可以完全控制 JUnit5 中测试方法(包括之前/之后方法)的执行,类似于 JUnit4 @RunWith 注释)?
我正在尝试构建一个 JUnit5 Arquillian 扩展,但由于 Aquillian 基本上需要在容器中执行每个测试,所以在从 Junit5 扩展运行 Arquillian 时遇到了问题。
我的代码在这里:BasicJunit5ArquillianTest.java
测试应该在单独的容器中运行所有方法(包括之前/之后),该容器可以是单独的 JVM、远程或嵌入式服务器或任何隔离的东西。我的扩展从 beforeEach 挂钩运行测试方法,使用 Arquillian 传输测试类并使用LauncherFactory.create()在容器中运行它,收集测试结果并将它们传回。
问题是测试方法被执行了两次——通过正常的 JUnit5 执行和通过我的来自 beforeEach 钩子的 Arquillian 扩展。我只想通过 Arquillian 运行测试并跳过方法的正常执行。
这在 JUnit5 扩展中是否可行?或者我需要创建一个自定义测试引擎,可能扩展 Jupiter 测试引擎?
java - 带有 JUnit 5.0.0-M4 NullPointerException 的 JMockit 1.31
以下代码在 Expectations 块在线给出 NullPointerException myInterface.method(anyInt); result = 1;
。
堆栈跟踪:
如果我理解正确,JMockit 应该制作某种实现的代理对象MyInterface
,但变量myInterface
是null
. 我是否需要额外的步骤来“初始化”myInterface
变量。我也尝试了@Mocked
和@Injectable
注释,但我得到了相同的结果。
更新: 代码适用于 JUnit 5 M1、M2 和 M3。
更新: 带有 JUnit 5.0.2 的 JMockit 1.36 按预期工作。
gradle - 如何使用 Gradle 运行特定(超出构建周期)Junit5 测试
我正在将测试转移到将与 Gradle 一起运行的 junit5。在我使用的一个项目中,有单元测试和一些必须按需运行的特定测试(我想来自特定的 Gradle 任务)。
单元测试很清楚。Gradle 插件添加了对此的支持。但是我找不到一种方法来为我的需要定义另一个测试任务,我在 Junit5 插件源中搜索并发现没有任何特定的类用于该目的。Gradle 插件只是设置一个 JavaExec 任务然后运行它。
因此,似乎没有可见的方法来定义我自己的内置类型任务
task myTask(type: Junit5TestRunner) 这里我们设置一个任务
有什么想法可以做到吗?