问题标签 [springrunner]

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 回答
678 浏览

integration-testing - 如何在集成测试中模拟 LocalDateTime.now()。我正在使用 Spring Runner 而不是 PowerMock

我必须与当前时间进行比较。任何解决方案都会有所帮助,它必须在集成测试中运行 LocalDateTime localDateTime = LocalDateTime.now();

0 投票
4 回答
12222 浏览

spring-boot - 运行spring boot测试时出错,找不到SpringRunner.class

当我尝试从我的 Spring Boot 应用程序调用 JUnit 测试用例时,我收到以下错误:

我在我的测试类中使用这个注释。

@RunWith(SpringRunner.class)

在此处输入图像描述

从项目依赖项添加 JUnit 库后,它给了我以下错误:

在此处输入图像描述

这是我的 gradle 依赖项: 在此处输入图像描述

另外,我在类路径中有受影响的类: 在此处输入图像描述

我的 Spring Boot 版本是 2.0.4。编辑器是 SpringToolSuite。有人可以帮我解决这个问题吗?

谢谢

0 投票
1 回答
937 浏览

java - SprintBootTest - 只创建必要的 bean

我有一个类似于以下的代码:

它可以工作 - 但也会在与 2 个创建的 bean 相同的上下文中创建所有 bean。这可能需要很长时间(并且我每次构建/部署都运行此测试)。

所以,我想找到一种方法让测试只加载测试所需的bean。在此示例中,它将仅是repository 和 someSearcher

我知道我可以使用 @BeanMock 为 bean 提供替代实现,但仍将创建 bean 的实际实现(尽管未使用)。

有什么建议么?

0 投票
2 回答
5899 浏览

spring-boot - SpringBoot @MockBean 和 @WebMvcTest 不起作用

控制器.java

UserServiceImpl.java

存储库.java

控制器测试.java

上面的配置工作正常,但下面不行。

我得到这个错误

应用程序无法启动


描述:

一个组件需要一个名为“entityManagerFactory”的 bean,但无法找到。

行动:

考虑在配置中定义一个名为“entityManagerFactory”的 bean。

2018-11-26 21:58:32.343 错误 7385 --- [main] ostest.context.TestContextManager:在允许 TestExecutionListener [org.springframework.boot.test.mock.mockito.MockitoTestExecutionListener@5c7bfdc1] 准备测试实例时捕获异常[com.webservices.example.librarydatabaseservice.controller.ControllerTest@74f827ad]

68) ~[junit-rt.jar:na] at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) ~[junit-rt.jar:na] at com.intellij。 rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) ~[junit-rt.jar:na] at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) ~[junit -rt.jar:na] 原因:org.springframework.beans.factory.BeanCreationException:创建名为“bookRepository”的 bean 时出错:无法创建类型为 [org.springframework.orm. jpa.SharedEntityManagerCreator] 同时设置 bean 属性'entityManager';嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名称为 '(inner bean)#3f362135' 的 bean 时出错:设置构造函数参数时无法解析对 bean 'entityManagerFactory' 的引用;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:327) ~[spring-beans-5.1.2 .RELEASE.jar:5.1.2.RELEASE] 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:131) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2。 RELEASE] 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1648) ~[spring-beans-5.1.2.RELEASE.jar:5.1.2.RELEASE] 在 org.springframework.beans。springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117) ~[spring-test-5.1.2.RELEASE.jar:5.1.2.RELEASE] ...省略了25个常见框架原因:org. springframework.beans.factory.BeanCreationException:创建名称为'(inner bean)#3f362135'的bean时出错:设置构造函数参数时无法解析对bean'entityManagerFactory'的引用;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:378) ~[spring-beans-5.1.2 .RELEASE.jar:5.1.2.RELEASE] 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver。

它说 entityFactoryManager 存在问题,但它以一种模拟方式工作,而另一种则不是......

完整代码Github 仓库

我在版本中使用 SpringBoot:2.1.0.RELEASE

0 投票
0 回答
48 浏览

junit - 为新线程设置系统属性

我有一段应用程序代码检索系统属性以获取日志路径。这段代码由批处理作业执行。

我已经使用 JobLauncherTestUtils 类编写了一个测试用例来启动这项工作。我如何模拟系统属性。当我使用静态块或使用@Before 明确设置系统属性时,当在新线程中启动作业时调用作业时系统属性值不可用。如何将系统属性值传递给通过 JobLauncherTestUtils 调用的作业

0 投票
0 回答
309 浏览

spring-boot - Tomcat 初始化并在不同的端口上启动

我的端到端测试有问题:

test.properties

如果我在本地运行测试,一切都很好。但是如果我在 VM 上运行这个测试,每次我收到一个错误:

在运行该测试之前,我确定该端口是空闲的,并且没有进程正在使用它。但是当我在本地运行这个测试时,我在日志中发现这两行,可能看起来很糟糕:

看起来tomcat启动了两次?这是可能的?

0 投票
2 回答
359 浏览

java - 编写 JUnit 测试用例时使用没有 SpringContext 的 SpringRunner 是一种好习惯吗?

我用 mockito 尝试了 junit,并为编码练习编写了一些测试用例。

这是我写的测试用例:

测试用例运行良好。

但我的申请被拒绝,具体原因如下:

即使您没有在测试中使用 SpringContext 并模拟所有内容,您也正在使用 SpringRunner。

现在,以下是我的担忧:

  1. 测试用例有什么问题?

  2. 上述拒绝原因是什么意思?

  3. 我该如何纠正?

0 投票
1 回答
697 浏览

java - 使用模拟服务进行 H2 数据库测试会产生空指针异常

我正在开发一个基于 Spring Java 的项目。出于测试目的,我实现了一个 H2 内存数据库,它通过 xml 文档填充了数据。我希望测试一种通过传入数据报更新数据库记录的方法。首先,此方法检查到达的数据报中是否有在数据库中找到的相关数据(这里是存储库调用),然后调用另一个具有给定 id 的外部服务,该服务提供需要的实际数据放入数据库而不是已经保存的数据库。因此,首先调用存储库,然后调用外部服务。当我想测试这个函数时,我使用了以下注释:

然后我模拟外部服务:

并使用以下命令调用 Spring 存储库:

并具有以下测试代码:

所以,我要模拟 ServiceName 服务,并且我已经提供了我希望在调用此函数时得到的响应,但是由于 ServiceName 为空,我不断收到 NullPointer 异常。它甚至没有被嘲笑。

不能同时测试存储库和模拟服务吗?我究竟做错了什么?

我真的很感激任何帮助!

谢谢!


在此处输入图像描述



好的,我找到了丢失的东西......最初,我的 Test 类上有以下注释:

我不得不将MockitoTestExecutionListener.class添加到 TestExecutionListeners 列表中......

0 投票
2 回答
744 浏览

java - 尝试使用 SpringRunner 进行单元测试时出现 NullPointer 异常

嗨,我正在尝试使用SpringRunner.class. 我正在我的测试类中为 jdbcTemaplte 创建一个新实例。我正在使用 H2 DB 进行单元测试,我可以使用 jdbcTemplate 实例来创建或更新表。它工作正常。但是当它进入实际类时,它的测试 jdbcTemplate 是 null ,它会抛出NullPointerException

下面是代码:

ClassToTest.java

JDBC 模板在 ClassToTest 中为 null,并在尝试测试方法时抛出 nullPointerException。

我只是不确定为什么 Autowire 没有连接我创建的依赖项。我曾尝试在必要时使用@Primary 显式获取此jdbcTemplate,但不确定为什么它不起作用。

任何建议在这里都有帮助。提前致谢。

0 投票
1 回答
872 浏览

java - Spring Boot @WebMvcTest 中的模拟方法返回值为 null

以下测试失败:org.json.JSONException: Unparsable JSON string。我尝试了各种模拟saveAndFlush方法的变体

但是,弹出相同的错误并且MockHttpServletResponse正文为空

如何saveAndFlush正确模拟存储库方法返回值?

SpringBootHomeControllerTest.java

}

ShipwreckRepository.java

ShipwreckController.java

海难.java