问题标签 [springjunit4classrunner]

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 投票
1 回答
913 浏览

spring - 测试后 SpringJUnit4ClassRunner 是否仍然不能可靠地调用 DisposableBean.destroy

根据:https: //jira.spring.io/browse/SPR-4103 SpringJUnit4ClassRunner 在测试后不会总是调用 DisposableBean.destroy (*facepalm*!) - 由于 JUnit 的实现问题。

这仍然是真的吗?

我在 scala 中创建测试,如下所示:

而且我发现执行 Service2Test 时,Service1Config 中 bean 的 destroy 方法没有被销毁。

我发现很多文章都建议添加 @After 来明确关闭上下文。这听起来像是一个等待发生的错误(因为如果您忘记在一个测试中添加 @After 清理,下一个测试类将失败,您将不知道为什么)。

如果使用 SpringJUnit4ClassRunner/JUnit 仍然无法做到这一点,是否有一个测试框架会在每次测试后自动调用上下文清理?

0 投票
1 回答
2914 浏览

spring-batch - 无法加载 ApplicationContext:Spring 和 junit

我正在为 Spring 应用程序编写单元测试。我已经把我SpringContext.xmlpe.edu.upc.demo.configuration

SpringContext.xml:

如您所见,SpringContext.xml位于src/main/java/pe/edu/upc/demo/configuration. 我在 Netbeans 中编程。我想知道这条路是否正确。

}

之后,我运行“CursoTest”的测试,我得到这个跟踪:

0 投票
9 回答
42205 浏览

spring - 在 Spring 测试中禁用 @EnableScheduling

当我运行单元测试时,它会调用我的计划任务。我想防止这种行为,这是由于我@EnableScheduling在我的主应用程序配置上的事实造成的。

如何在我的单元测试中禁用它?

我遇到了这个建议设置配置文件的 问题/答案?

不知道我会怎么做?或者如果它是一个矫枉过正?我正在考虑为我的单元测试使用单独的 AppConfiguration,但是当我这样做时感觉就像我重复了两次代码?

单元测试示例。

0 投票
1 回答
795 浏览

unit-testing - SpringJUnit4ClassRunner - 为每个测试重新加载上下文,即使使用了相同的上下文

这是我们单元测试的基类:

所有单元测试都扩展了这个类。

当我在 Eclipse 中本地运行测试时(使用 Run As > Unit Test),测试运行大约 5 秒,因为所有测试共享相同的上下文并且它只加载一次。

但是,当我使用 mvn 测试目标运行它们时,大约需要 5 分钟。查看日志后,我看到每次测试都在加载应用程序上下文。我们在 Jenkins CI 服务器上运行它需要同样的时间(5 分钟)。

不知道发生了什么。在 spring 文档中,它声明即使使用 maven 也应该重用 appContext,但这里不是这种情况。

任何帮助,将不胜感激。

更新: 我在打开调试标志的情况下运行 mvn,我看到每个测试都生成了一个新的 JVM:

分叉命令行: cmd.exe /X /C "java -Xverify:none -jar S:\git\picaxo21\picaxo\picaxoService\target\surefire\surefirebooter8169952914558366417.jar S:\git\picaxo21\picaxo\picaxoService\target\ surefire\surefire8550033206398936560tmp S:\git\picaxo21\picaxo\picaxoService\target\surefire\surefire_05655453605766528120tmp"

分叉命令行: cmd.exe /X /C "java -Xverify:none -jar S:\git\picaxo21\picaxo\picaxoService\target\surefire\surefirebooter4002024477779069323.jar S:\git\picaxo21\picaxo\picaxoService\target\ surefire\surefire6735432532690834115tmp S:\git\picaxo21\picaxo\picaxoService\target\surefire\surefire_17783676008756503456tmp"

分叉命令行: cmd.exe /X /C "java -Xverify:none -jar S:\git\picaxo21\picaxo\picaxoService\target\surefire\ 7874269889863176184.jar S:\git\picaxo21\picaxo\picaxoService\target\ surefire\surefire2050758518148174678tmp S:\git\picaxo21\picaxo\picaxoService\target\surefire\surefire_27591156970671336255tmp"

我正在使用 forkCount=1 和 reuseForks=true 所以我不确定为什么会这样。任何线索?

父 POM:

0 投票
1 回答
1524 浏览

java - 日志不打印

我目前正在研究一个使用弹簧的项目。对于 Junit,我正在使用 @RunWith(SpringJUnit4ClassRunner.class) 注释。一切工作正常,除了我没有看到 applicationContext 的 spring 处理的任何日志。在控制台窗口中,这是一条当前消息:

我将 log4j.properties 保存在 Eclipse 的 src/main/resources 文件夹中(使用 maven 项目)。以下是内容:

Log4j.properties ;

已经查看了关于类似问题的 Q/A。但仍然不知道是什么问题。这里有人可以帮我吗?

谢谢

0 投票
1 回答
11152 浏览

spring - 为什么使用 SpringJUnit4ClassRunner.withAfterClasses 方法出现神秘的 MultipleFailureException 错误消息

为什么我的 spring 测试设置失败并出现以下不太有用的错误消息?所有建议表示赞赏。

JUnit 输出

控制台输出

指定自定义侦听器类或使默认侦听器类(及其所需的依赖项)可用。违规类:[org/springframework/transaction/interceptor/TransactionAttribute] 信息:org.springframework.test.context.support.DefaultTestContextBootstrapper - 无法实例化 TestExecutionListener [org.springframework.test.context.transaction.TransactionalTestExecutionListener]。指定自定义侦听器类或使默认侦听器类(及其所需的依赖项)可用。违规类:[org/springframework/transaction/interceptor/TransactionAttributeSource] 信息:org.springframework.test.context.support.DefaultTestContextBootstrapper - 使用 TestExecutionListeners:[org.springframework.test.context.web.ServletTestExecutionListener@76959acc,org.springframework。 test.context.support。

这是目标片段

和测试片段

0 投票
1 回答
14680 浏览

gradle - 运行 Gradle JUnit 测试时出现“地址已在使用:绑定”异常

我将 Spring Boot 1.2.1.RELEASE、JUnit4 和 Gradle 2.1 用于 RESTful 服务,并尝试定义一个属性文件,其中包含和/或覆盖仅在 JUnit 测试中使用的值。当作为 JUnit 测试调用时,所有测试都会毫无问题地执行。但是,当这些相同的测试在 gradle “build” 或 “test” 任务期间运行时,它们会失败并出现异常“Caused by: java.lang.IllegalStateException: Tomcat connector in failed state”,根本原因是“java.net .BindException:地址已在使用中:绑定”。

有多个测试类需要应用程序上下文才能运行。

为了通过属性文件促进替代值,我包含了 TestPropertySource()

是否需要额外的 Gradle 配置才能完成这项工作?

控制器测试类

application.properties (/src/main/resources)

应用程序-junit.properties (/src/test/resources)

构建.gradle

堆栈跟踪:

0 投票
0 回答
118 浏览

java - How do I use @RunWith with both JUnit4ClassRunner and JUnitParams?

I am writing an integration test that is a parameterized test, and I need to include @RunWith(SpringJUnit4ClassRunner.class) and @RunWith(JUnitParamsRunner.class). The problem is that I can only specify one @RunWith. Is there a workaround to this problem?

0 投票
1 回答
446 浏览

java - Junit测试;是否可以在应用程序上下文启动之前配置 Bean 的默认属性?

我有一个带有属性“DBServer”的Bean;它的默认值为“location1”;

在应用程序启动期间,根据“DBServer”的值,实例化不同的类。

我有 200 个测试,这个默认设置很好。

但是,截至目前,我想测试替代方案。

问题:

有没有办法在应用程序上下文启动之前从 junit 测试用例中重置默认值?

0 投票
7 回答
55159 浏览

java - 导入 org.springframework.test.context.junit4.SpringJUnit4ClassRunner 无法解析

我是 Spring 的新手,这也是我在 StackOverflow 上的第一个问题,所以我将尝试让这个问题尽可能容易理解。

我正在尝试在教程中使用 Spring 和 Maven 创建 Web 服务客户端:我收到此错误:无法解析导入 org.springframework.test.context.junit4

这是我的代码:

这是我pom.xml的,以备不时之需。

我在 StackOverflow 中尝试了其他一些解决方案,但我无法让它工作。

谢谢。