问题标签 [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 回答
41 浏览

spring - 何时使用 new 运算符创建对象或在测试类时使用自动连线?

我要测试的类称为 UserService 和 sendEmail 方法,它向用户发送电子邮件。要完成此任务,它依赖于 EmailService。现在,在编写测试用例来测试这个时 -我应该创建 UserService userService = new UserService() 并模拟电子邮件服务还是创建上下文文件在我的测试类中定义 UserService bean 和 @Autowired UserService 并模拟 EmailService?这两种方法有什么区别,我什么时候应该使用另一种?

0 投票
0 回答
29 浏览

spring - 多次使用bean的spring contextconfiguration

给定一个进行一些组件测试的类。我想在测试中只模拟一次 fooService.send 并在 aService 和 bService 中使用它:

和配置:

如何使用必须提供给多个 bean 的服务实例或模拟?

1:在 AService 和 BService 的实例中使用私有变量
2、3:使用函数 - 这将导致 FooService 和 BarService 的 2 个实例,对吗?
4:模拟和真实服务实例必须使用哪个选项?

0 投票
1 回答
101 浏览

spring-annotations - 通过代码进行 Spring 配置与通过注释进行配置

我通过如下代码创建 Spring ApplicationContext:

在测试类中,我这样称呼它:

它工作正常,没有问题。

现在我正在尝试做同样的事情,但通过注释:

这根本行不通。 applicationContext不是自动装配的,配置中的bean也是如此。你能说我可能做错了吗?

为什么我想从代码切换到注释:我希望能够从配置中自动装配 bean。现在(以上下文创建的代码方式)我应该appContext.getBean("jdbcTemplate", JdbcTemplate.class)在测试方法中编写类似的东西。如果我能写就太好了

这将起作用:)

0 投票
0 回答
280 浏览

java - Spring 4,没有 Spring Boot 的 JUnit 4 NoSuchBeanDefinitionException:没有符合条件的 bean 类型

我有一个运行良好的 Spring 4.3 应用程序。我正在尝试使用 JUnit 4.11,但没有加载上下文。

原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的“caesb.websupport.service.BatchSolicitacaoService”类型的合格bean:预计至少有1个符合自动装配候选资格的bean。依赖注解:{@javax.inject.Inject()}

基础弹簧application.xml

test-spring-application.xml

它只有数据源配置。

BatchSolicitacaoService.java

PriorizacaoHidrometroDWService.java

基本测试.java

我添加了@TestExecutionListeners,但没有成功。我删除了@Transaction,但也没有成功。

0 投票
1 回答
374 浏览

spring-boot - SpringJUnit4ClassRunner 测试的配置与 SpringBootTest 冲突

我的项目中有一堆测试,它们都用 @SpringBootTest 注释,因此加载了 SpringBoot 上下文。

现在,最近我将一个测试重构为@RunWith(SpringJUnit4ClassRunner.class),其中我想要一个更小的范围(它是关于 camunda 的进程覆盖率)。由于这意味着不会自动加载上下文,因此我使用静态内部类配置“手动”创建了一些 bean。整个测试看起来像这样:

现在,当我运行它时,这个测试运行良好。但是当我运行任何其他测试(那些仍然用 @SpringBootTest 注释的测试)时,我在加载 ApplicationContext 时遇到问题:

显然,在加载 ApplicationContext 时会创建一个 bean,因为该类是用 @Component 注释的,并且上下文加载器尝试从我的内部配置创建另一个 bean。

我不能允许 bean 覆盖,因为我的模拟 bean 可能会覆盖自动创建的 bean(他们这样做,我试过了)。

我该如何规避这个?我希望我的 SpringJUnit4ClassRunner 测试及其内部配置不会影响我的其他 @SpringBootTest 测试。我已经尝试使用 @ConditionalOnMissingBean 使配置 bean 有条件,但这不起作用。

0 投票
2 回答
519 浏览

java - SpringBoot 集成测试因 java.awt.HeadlessException 而失败

来自@Bobernac Alexandru 的审查和建议后的更新

问题已更新为提案,您可以直接使用它;)

运行 Springboot 集成测试时遇到问题。

我的测试班

AbstractIT 看起来像(我替换为更具可读性的包名称)

当我运行测试时,出现以下错误,抛出异常,同时执行mvn.perform(...)

org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是 java.util.concurrent.ExecutionException: java.awt.HeadlessException

在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1013) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897) 在 javax.servlet.http.HttpServlet.service(HttpServlet .java:645) 在 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) 在 org.springframework.test.web.servlet.TestDispatcherServlet.service(TestDispatcherServlet.java:71) 在 javax.servlet。 http.HttpServlet.service(HttpServlet.java:750) 在 org.springframework.mock.web.MockFilterChain$ServletFilterProxy.doFilter(MockFilterChain.java:166) 在 org.springframework.mock.web.MockFilterChain.doFilter(MockFilterChain.java: 133) 在 org.springframework.test.web.servlet.MockMvc.perform(MockMvc.java:182) 在 com.snef.si.data.analytics.ven.integration。DepenseEndpointIT.shouldReturnVentePrevHttpStatus200(DepenseEndpointIT.java:50) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43) 在 org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) 在 org.junit.internal.runners.model 的 java.lang.reflect.Method.invoke(Method.java:498)。 ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)在 org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks。在 org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java: 26) 在 org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) 在 org.springframework.test.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) .springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner .runChild(SpringJUnit4ClassRunner.java:251) 在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner. java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate (ParentRunner.java:268) 在 org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) 在 org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java :70) 在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner 的 org.junit.runners.ParentRunner.run(ParentRunner.java:363)。run(SpringJUnit4ClassRunner.java:190) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution .junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main (JUnitStarter.java:70) 引起:java.util.concurrent.ExecutionException: java.awt.HeadlessExceptionstartRunnerWithArgs(IdeaTestRunner.java:47) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)引起:java.util.concurrent.ExecutionException:java.awt.HeadlessExceptionstartRunnerWithArgs(IdeaTestRunner.java:47) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)引起:java.util.concurrent.ExecutionException:java.awt.HeadlessException

在我的 main() 中,我修改了运行应用程序的方式,我设置headless为 false 以避免错误,它工作正常,但我的集成测试不工作:

有什么我错过的吗?有什么方法可以传递相同的参数,即:builder.headless(false)测试类?

在此先感谢您的帮助

0 投票
1 回答
388 浏览

java - 在单元测试之前从 .sql 预加载数据会引发语法错误

我正在使用 JPA 和 SpringJUnit4ClassRunner 对 Spring Boot 应用程序执行单元测试。为此,我创建了一个配置文件 -

我的测试课看起来像这样 -

现在我想在运行任何测试之前将脚本文件 beforeTestRun.sql 中的数据插入到实体中。所以我在我的测试类(即ExampleTest)上方添加了以下注释 -

我的 beforeTestRun.sql 包含插入查询 -

我的模型课是-

现在在运行测试类之后,它试图从 .sql 文件中插入,但即使语法正确,它也会抛出错误说 -

你能建议我吗?

0 投票
0 回答
130 浏览

intellij-idea - Intellij 测试用例未退出

我正在使用Intellij 2019.2版本。我有一个项目,我们将JavaKotlin用于源代码。Gradle用于编译和构建。已为 Java 代码添加了JUnit 4测试用例。

打包的测试用例,运行良好并成功,但过程不会停止。当我以任何模式运行/调试/覆盖范围运行整个包的测试用例时,就会发生这种情况。但是,如果运行单个类或方法测试用例,则该过程结束。

0 投票
0 回答
125 浏览

spring - 使用 SpringJUnit4ClassRunner 将 Spring 4 迁移到 Spring 5 导致 Junit 失败

最近,我们将应用程序从 Spring 4 迁移到 Spring 5,导致 Junits 失败。得到错误:

0 投票
2 回答
168 浏览

unit-testing - 我有一个 apache camel 测试用例,由于创建了不同的对象实例而失败。对象实例具有不同的 ID

以下是我得到的错误 -

我班的配置如下——

这是失败的测试用例mockSendEndpoint.expectedBodiesReceived(request);-

我如何断言这些对象实例?有什么办法吗?还是我在这里做错了什么?

另外仅供参考,我正在使用新的 EmailNotificationRequest 在处理器中设置交换主体。