JUnit java.lang.NoSuchMethodError: org.junit.jupiter.api.extension.ExtensionContext.getRequiredTestInstances()
我正在为我的项目应用程序(Spring Boot)创建一些JUNIT测试用例,并在运行Junit测试用例时遇到以下错误堆栈: java.lang.NoSuchMethodError: org.junit.jupiter.api.extension.ExtensionContext.getRequiredTestInstances()Lorg/junit/jupiter/api/extension/TestInstances; at org.mockito.junit.jupiter.MockitoExtension.beforeEach(MockitoExtension.java:141) at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachCallbacks$0(TestMethodTestDescriptor.java:130) at org.junit.p
40 2024-04-04
编程技术问答社区
为Gradle 4.7配置,以便为JUnit 5测试生成HTML报告
我有一个基于以下的应用程序: Spring Framework 5.0.4.4.Release Gradle 4.7 - 通过 配置的多模块项目 JUnit 5.1.1 与Junit有关Gradle的配置位于根模块中的build.gradle文件中: ... subprojects { apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.junit.platform.gradle.plugin' sourceCompatibility = '1.8' targetCompatibility = '1.8' repositories { jcenter() } ext { ... junitVersion = '5.1.1' ... } dependen
12 2024-04-04
编程技术问答社区
如何在Gradle中使用JUnit 5?
在我成功进行Junit 4测试后,我试图将Junit 5与Gradle一起使用. 预期结果: Junit 4测试在输出中给出了一个不错的"通过",build/reports/tests中的HTML报告. . 实际结果:下面的Junit 5测试除了(...) build successful以外的任何内容,虽然我知道该测试实际上没有运行,因为没有传递/跳过/跳过/失败的测试日志输出,并将fail放在测试中可以使构建成功. 运行gradle test --info在许多我认为大部分无关的输出中产生Skipping task ':testClasses' as it has no actions.. 令人惊讶的是,它还说Executing task ':test'和Generating HTML test report... Finished generating test html results,build/test-results/test中的XML相似,虽然未生成XML
10 2024-04-04
编程技术问答社区
Junit5在@AfterEach中获得测试结果
我试图在@AfterTest中获得测试结果的某些上下文.我想至少了解它是否通过,理想情况下,如果有一个. . 但是,我尝试的每个参数似乎都无法解析,我找不到有关应有的内容的任何文档. 代码: public class TestClass { @AfterEach public void afterEach( TestInfo testInfo, //works, but no report on state of test // none of these work TestExecutionSummary summary, TestExecutionResult result, TestFailure fail, Optional execOp, Throwable exception ) {
70 2024-03-21
编程技术问答社区
Junit 5是否有类似Cucumber的标记钩子的东西?
是否有任何方法可以用junit5中的钩子来注释单个测试,例如在黄瓜中? 例如,在黄瓜中可以像 一样写钩子 @Before("@SomeTest") public void beforeSomeTest(){ } ,然后如果我们用@Sometest注释标记测试,则挂钩将在测试之前运行. 有什么办法在Junit5中执行此操作? 解决方案 如/a>,class MyTest { @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @ExtendWith(MyExtension.class) @interface MyAnnotation { } static class MyExtension implements BeforeTestExecutionCallback { @Override public void beforeTestExecution(ExtensionContext
14 2024-03-21
编程技术问答社区
JUnit5中assertAll与多个断言的关系
是否有任何理由分组多个断言: public void shouldTellIfPrime(){ Assertions.assertAll( () -> assertTrue(isPrime(2)), () -> assertFalse(isPrime(4)) ); } 而不是这样做: public void shouldTellIfPrime(){ Assertions.assertTrue(isPrime(2)); Assertions.assertFalse(isPrime(4)); } 解决方案 关于assertAll的有趣之处在于它最好用于主张一组属性,这些属性属于构想.您的第一个本能是"我想断言它"的东西. 示例 您的特定示例不是assertAll的最佳用例,因为用素数和非prime彼此独立检查isPrime - 如此之多,以至于我建议为此编写两种测试方法. ,但
16 2024-03-17
编程技术问答社区
春天Boot Camel测试
我需要在Spring Boot应用程序中测试骆驼路由. 我拥有带有所有必要bean的Spring Boot Main类. 我正在使用camelspringjunit4classrunner.class. 在@ContextConfiguration中添加了我的Spring Boot Main类,因为它包含所有配置.我没有单独的配置类. 我的测试课程中的自动骆驼膜: @Autowired CamelContext camelContext; 但是测试失败了,错误: 由:org.springframework.beans.factory.nosuchbeandefinitionException: 无资格'org.apache.camel.camelcontext'可用:可预期至少有1个bean,它符合Autowire候选的资格. 依赖项注释:{@org.springframework.beans.factory.annotation.autowired(q
20 2024-02-28
编程技术问答社区
如何将JUnit注解组合成一个自定义注解?
(使用OpenJDK-13和Junit5-Jupiter) 问题是我的单位测试每个使用不小的junit注释系统,类似的东西: @ParameterizedTest @MethodSource("myorg.ccrtest.testlogic.DataProviders#standardDataProvider") @Tags({@Tag("ccr"), @Tag("standard")}) 这使得测试创作有些乏味,测试代码很长,当然,当需要更改时,这是一件琐事! 想知道我是否可以创建自己的junit注释:@CcrStandardTest,这意味着上面的所有注释? 我还尝试在类定义中将注释转移到上下(希望它们然后适用于类的所有方法),但是编译器拒绝:" @parameterizedTest不适用于键入" 解决方案 您可以做一个: junit jupiter注释可以用作元通道.这意味着您可以定义自己的组成的注释,它将自动继承 例如: impo
4 2024-02-26
编程技术问答社区
JUnit5-Jupiter。合成(="meta")注解不能解析为注解定义
我定义了自己的junit注释: @ParameterizedTest @MethodSource("myorg.qa.ccrtesting.DataProviders#standardDataProvider") @Tags({@Tag("ccr"), @Tag("standard")}) public @interface CcrStandardTest { } 然后,我能够在测试中使用该注释: @CcrStandardTest public void E0010_contact_standard (String testData) { ... 我的运行配置: JVM选项:-ea 类:myorg.qa.ccrtesting.ccrstandardtests.CcrStanConTest - 这是由IDE提出的(并已验证以指向正确的类,该类可容纳我的原型测试方法) 但是,这将导致:jupiter.api.extension.ParameterResoluti
36 2024-02-26
编程技术问答社区
何时使用@RunWith,何时使用@ExtendWith
我和我的团队一直在使用Spring Boot从事一堆微服务. 由于服务通过Junit和Spring Boot升级(我们现在正在使用Spring Boot 2和Junit 5),因此由不同的开发人员实施的不同JUNIT,现在正在使用不同的模式: @extendwith @runwith 今天,他们两个之间有什么区别,我们真的需要它们进行单位测试还是嵌入到一些新的春季靴子注释中? 解决方案 答案可以在文档: 如果您使用的是Junit 4,请不要忘记 将@runwith(springrunner.class)添加到您的测试中,否则 注释将被忽略.如果您使用的是Junit 5,则无需 添加等价@ExtendWith(springextension.class)为@springboottest和 其他@…已经对其进行注释 . 其他解决方案 如果您使用的是Junit版本@RunWith(SpringRunner.class)或@RunWith(Mockito
30 2024-02-26
编程技术问答社区
@Before、@BeforeClass、@BeforeEach和@BeforeAll之间的区别
之间的主要区别是什么 @Before和@BeforeClass 和junit 5 @BeforeEach和@BeforeAll @After和@AfterClass 根据 junit api @Before在以下情况下使用: 编写测试时,通常会发现几个测试需要在运行之前创建的类似对象. @BeforeClass可用于建立数据库连接.但是不能做同样的事情吗? 解决方案 标记@Before的代码在每个测试之前执行,而@BeforeClass在整个测试固定装置之前运行一次.如果您的测试类有十个测试,则@Before代码将被执行十次,但@BeforeClass将仅执行一次. 通常,当多个测试需要共享相同的计算昂贵设置代码时,您会使用@BeforeClass.建立数据库连接属于此类别.您可以将代码从@BeforeClass移动到@Before,但是您的测试运行可能需要更长的时间.请注意,标记为@BeforeClass的代码是作为静态初始器运行的,因此将在创
18 2024-02-26
编程技术问答社区
如何禁用GitHub Actions上的一些JUnit 5 Android工具化测试?
我有一个仪器测试课.它的测试用例在Junit 5(在下,在Gradle插件的帮助下,此答案).如何禁用该测试类,无法在CI上运行(特别是在GitHub操作上)? 我无法使用junit 5注释,例如@DisabledIfEnvironmentVariable,因为Android仪器测试在设备/模拟器上运行,并且看不到主机OS环境变量. 解决方案 所有github工作流程都可以访问环境变量CI,CI始终为true( docs ). 考虑到这一点,我们可以使用Gradle间接禁用测试类. 为此,请在您的 app/build.gradle [.kts] 中声明这样的buildConfig字段:: android { buildTypes { getByName("debug") { val isCI = System.getenv("CI")?.toBoolean() ?: false buildConfigField("Boole
12 2024-02-19
编程技术问答社区
Junit5 testSuite与SelectClasses在安卓单元测试中不工作
我正在尝试为Android应用程序的单元测试创​​建一个测试套件,但是它总是以不同种类的配置错误失败,其中一个如下, FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':appModules:factList:testDebugUnitTest'. > No tests found for given includes: [reprator.wipro.factlist.FactListTestSuite] (filter.includeTestsMatching) repodetails:一个> 分支:junit5 testsuite类: https://github.com/thereprator/wipro/wipro/blob/junit5/appmodules/factlist/factlist/src/test/kotlin/k
16 2024-02-07
编程技术问答社区
在Gradle 6.1.1中无法解析junit-jupiter-params:5.6.2和junit-jupiter-engine:5.6.2
我有一个带有2个Android模块和一个纯Java模块的Android项目. 将Android构建工具更新为com.android.tools.build:4.0.0,然后将Gradle包装器和Gradle-6.1.1--所有纯Java模块无法再解决Junit. 与Gradle文件同步时,我会遇到以下错误: Failed to resolve: org.junit.jupiter:junit-jupiter-params:5.6.2 Failed to resolve: org.junit.jupiter:junit-jupiter-engine:5.6.2 如果我尝试直接运行测试,我将获得以下输出: Could not resolve all files for configuration ':domain:testCompileClasspath'. > Could not resolve org.junit.jupiter:junit-jupiter
20 2024-02-07
编程技术问答社区
如何用Android的依赖性和robolectric运行Junit5测试
我正在尝试进行这样的单元测试: @org.junit.jupiter.api.Test void junit5codeCoverage() { final int result = new Foo().junit5(); Assert.assertEquals(Looper.getMainLooper().getThread(), Thread.currentThread()); assertEquals(-1, result); } 是 junit5 用robolectric的android依赖性(即Looper.getMainLooper())测试. 我正在使用 junit5 android junit5 android插件,允许在Android设置中运行Junit5.但这无法开箱即用,因为它不会加载robolectric.所以我尝试了 Alixwar的分支,但仍然不会使用Android类.
16 2024-01-30
编程技术问答社区
用于Android测试的JUnit 5
如何为Android单元测试配置Junit 5? 我尝试了: testCompile("org.junit.jupiter:junit-jupiter-api:5.0.0") 但是它不起作用,当我运行以前的最简单的单元测试时: @Test public void addition_isCorrect() throws Exception { assertEquals(4, 2 + 2); } 我有错误: Exception in thread "main" java.lang.NoSuchMethodError: org.junit.platform.commons.util.ReflectionUtils.getDefaultClassLoader()Ljava/lang/ClassLoader; at org.junit.platform.launcher.core.ServiceLoaderTestEngineRegistry.loadTe
10 2024-01-28
编程技术问答社区
在此构建中使用了废弃的Gradle特性,使其与Gradle 5.0不兼容。
我有Gradle失败: ..."Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0." 案例描述: 附加到项目代码库的下一个libs: app/build.gradle //(Required) Writing and executing Unit Tests on the JUnit Platform testImplementation "org.junit.jupiter:junit-jupiter-api:5.2.0" testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.2.0" // (Optional) If you need "Parameterized Tests" testImplementation "org.junit.jupit
34 2024-01-27
编程技术问答社区
JUnit AWSCredentials NoClassDefFoundError with LocalStackContainer
尝试实例化localstackcontainer时,我会得到以下例外.我确实可以使用此类,并且能够在我的本地找到源代码.我找不到根本原因.我正在使用Java 11的Windows OS. import org.testcontainers.containers.localstack.LocalStackContainer; import org.testcontainers.junit.jupiter.Testcontainers; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; import software.amazon.awssdk.regi
12 2024-01-25
编程技术问答社区
如何在JUnit5中管理失败的测试
我正在迁移到Junit5,我想知道Junit5中是否有一种简单的方法可以知道测试何时失败,就像我们在Junit4中使用TestWatcher一样. 我进行了一些研究,发现了类似但开放的问题,例如这样: https://github.com/junit-team/junit-team/junit5/junit5/sissues/542 由于大多数人都很老,所以我要问以防万一有一个解决方案. 这个想法是能够进行屏幕截图或在我的日志中添加一些消息.因此,是否有听众或扩展名或其他东西可以使我可以管理WebDriver测试的故障/通过/跳过? 提前致谢! 解决方案 好的,谢谢Glytching. 这比我预期的要难,但终于做到了.正如您指出的那样,我们需要创建一个实现BeforeTestExecutionCallback和AfterTestExecutionCallback的外部类(例如WatcherExtension),然后使用扩展名给出的上下文来评估异常. 在此课程中,我们可
20 2023-11-30
编程技术问答社区
Vert.x 测试以TimeoutException停止。测试执行超时了
我正在使用vert.x 3.5.3.我有这个(简单的)垂直: class DialPadVerticle : AbstractVerticle() { private companion object : KLogging() override fun start(future: Future) { vertx.eventBus().consumer(Address.DIALPAD_COMBINATIONS) { message: Message -> val input = message.body() logger.info { "Received: $input" } message.reply(JsonObject().put("result", DialPad().combinations(input))) } future.complete() } override f
18 2023-11-18
编程技术问答社区