Tag: junit5

使用JUnit 5,如何在测试实例之间的“ExtensionContext.Store”中共享信息?

我遇到了JUnit 5(5.0或5.1)和自定义扩展的问题。 我们使用服务加载器加载所有实现,然后修改我们的扩展引导的方式。 这些实现只能加载一次,因此我考虑使用ExtensionContext.Store并将其放在那里。 然后,每个后续测试实例只从Store而不是通过服务加载器加载它。 现在,我甚至意识到分层上下文结构,我知道有一些“根”上下文可以通过ExtensionContext.getRoot() 。 但是这个“根”上下文( JupiterEngineExtensionContext实例)并不是真正的根 – 每个测试实例都有不同的上下文。 假设您有FooTest和BarTest ,然后为每个产品打印出getRoot()产量: org.junit.jupiter.engine.descriptor.JupiterEngineExtensionContext@1f9e9475 org.junit.jupiter.engine.descriptor.JupiterEngineExtensionContext@6c3708b3 因此,尝试从Store检索以前存储的信息失败。 是否有此限制? 它使ClassExtensionContext和JupiterEngineExtensionContext之间的界限非常模糊。 有没有其他方法通过扩展全局存储一些信息? 这是我尝试使用商店(基本上删除所有其他信息)的(非常)简化版本。 我还添加了一些System.out.print()调用来强调我所看到的内容。 在两个测试类上执行此扩展会导致我上面描述的内容: public class MyExtension implements BeforeAllCallback { @Override public void beforeAll(ExtensionContext context) throws Exception { System.out.println(context.getRoot()); if (context.getRoot().getStore(Namespace.create(MyExtension.class)).get(“someIdentifier”, String.class) == null) { context.getRoot().getStore(Namespace.create(MyExtension.class)).put(“someIdentifier”, “SomeFooString”); } else { // this is never executed System.out.println(“Found it, […]

无法使用Maven执行Junit5测试

Maven执行 mvn clean test 我正在尝试将junit5用于我的一个maven项目,但是在test阶段无法使用 – 执行unit testing – org.junit.jupiter junit-jupiter-api 5.0.0-M3 我得到的输出是 – [INFO] — maven-surefire-plugin:2.19.1:test (default-test) @ utils — ——————————————————- TESTS ——————————————————- Results : Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 尝试实施提到的解决方案@ Surefire没有采用Junit 5测试来更新依赖关系 – org.junit.jupiter junit-jupiter-api 5.0.0-M3 org.junit junit5-api 5.0.0-ALPHA test 并将插件更新为 – org.apache.maven.plugins maven-surefire-plugin 2.19.1 org.junit surefire-junit5 5.0.0-ALPHA 但输出仍然相同。 […]

将JUnit 5测试结果与Intellij测试报告集成

我的build.gradle配置如下: apply plugin: ‘java’ compileTestJava { sourceCompatibility = 1.8 targetCompatibility = 1.8 } repositories { mavenCentral() } dependencies { testCompile(“org.junit.jupiter:junit-jupiter-api:5.0.0-M1”) testRuntime(“org.junit.vintage:junit-vintage-engine:5.0.0-M1”) } 和这样一个简单的测试: public class JUnit5Test { @Test void test() { } } 当我执行测试时,我在控制台中看到了这个: Test run finished after 76 ms [ 1 tests found ] [ 0 tests skipped ] [ 1 tests started ] […]

使用junitPlatform时设置系统属性

在使用Gradle执行JUnit 5测试时,我无法找到如何设置系统属性。 标准test任务可以配置如下: test { systemProperty ‘org.slf4j.simpleLogger.defaultLogLevel’, ‘warn’ } 但是, junitPlatform任务似乎没有这样的选项。

Gradle项目在IntelliJ中运行jUnit 5测试

我正在尝试Gradle和jUnit5。 除了我不能运行特定的jUnit测试之外,一切正常。 当我右键单击测试类时,不会出现“运行’SampleTest’”选项。 我有最新版本的IntelliJ(2016.1.3)Ultimate。 这是我的build.gradle文件: repositories { mavenCentral() } apply plugin: ‘java’ version = ‘1.0.0-SNAPSHOT’ jar { baseName = ‘test-project’ } dependencies { testCompile group: ‘org.junit.jupiter’, name: ‘junit-jupiter-api’, version: ‘5.0.0-M1’ } 项目结构是标准结构(如Maven)。 这是一个测试的例子: package com.test; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; public class SampleTest { @Test public void sampleTest() { int test = 1; Assertions.assertTrue(test == 1); […]

在没有Maven或Gradle的情况下将JUnit 5与Java 9一起使用

说明: 我想在Eclipse中使用JUnit 5创建一个JUnit测试(Oxygen 4.7.1a) 。 此JUnit测试应位于名为Test的单独src文件夹中。 但是,由于我是JUnit和Java 9的新手,因此遇到了以下问题。 我不想为此使用像Gradle或Maven这样的构建工具。 问题: 因为我有两个不同的src文件夹,一个用于项目src,另一个用于测试用例: 我需要两个module-info.java文件吗? (每个src文件夹一个) 我的module-info.java文件中需要哪些模块才能使JUnit 5工作?

如何在IntelliJ和Maven中使用JUnit 5 @Tag

我想使用JUnit 5中的@Tag ,以便轻松过滤我的测试。 我在2016年9月的博客中发现IntelliJ不支持@Tag 。 不知道当前的状态是什么。 此外,我是使用Maven的新手,但我尝试修改POM文件,以便在命令提示符下执行mvn test时过滤测试。 没运气。

如何在IntelliJ IDEA中指定哪个@Tag应该用于JUnit

有没有办法从IntelliJ的JUnit5 Runner的构建中指定只测试具有特定@Tag的测试方法(或者相反,除了具有特定@Tag的测试之外的所有测试都应该被执行)? 我知道如何使用maven,但只有IntelliJ UI才有可能吗? 最好的问候,迪特尔

断言在JUnit5中断言多个断言

是否有任何理由将多个断言分组: public void shouldTellIfPrime(){ Assertions.assertAll( () -> assertTrue(isPrime(2)), () -> assertFalse(isPrime(4)) ); } 而不是这样做: public void shouldTellIfPrime(){ Assertions.assertTrue(isPrime(2)); Assertions.assertFalse(isPrime(4)); }

Eclipse没有使用由NoClassDefFoundError引起的JUnit 5的测试

问题 每当我运行我的项目JUnit测试(使用JUnit 5与Java 9和Eclipse Oxygen 1.a)我遇到eclipse无法找到任何测试的问题。 说明 在运行配置下,eclipse甚至找不到用@Test注释的方法,而是只显示“ (所有方法) ”。 以下图片有望为我的设置提供更好的一瞥: 控制台输出: java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.(JUnit5TestLoader.java:31) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source) at java.base/java.lang.Class.newInstance(Unknown Source) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206) Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source) at java.base/java.lang.ClassLoader.loadClass(Unknown Source) … […]