考虑以下示例:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
properties = {
"some.property=valueA"
})
public class ServiceTest {
@Test
public void testA() { ... }
@Test
public void testB() { ... }
@Test
public void testC() { ... }
}
我正在使用SpringBootTest
注释的properties
属性为这个测试套件中的所有测试设置some.property
属性的值。现在,我想为其中一个测试(例如testc
)设置该属性的另一个值,而不影响其他测试。我怎样才能做到这一点?我已经阅读了Spring Boot docs中的“测试”一章,但是我还没有找到任何与我的用例匹配的东西。
您的属性在Spring上下文加载期间由Spring计算。
,因此在容器启动后不能更改它们。
作为解决办法,您可以将方法拆分到多个类中,这样就可以创建它们自己的Spring上下文。但是要小心,因为这可能是一个坏主意,因为测试执行应该很快。
更好的方法是在测试中的类中设置一个setter,该setter注入some.property
值,并在测试中使用此方法以编程方式更改该值。
private String someProperty;
@Value("${some.property}")
public void setSomeProperty(String someProperty) {
this.someProperty = someProperty;
}
我有一个测试: 这是控制器(测试类)中的相关部分: 我有一个在下,我需要覆盖它,仅针对名为 也许我可以使用另一个文件“application.properties”和另一个类测试,但我正在寻找一个更智能的解决方案。
我知道我可以使用。但是注释只接受文字。如果我想计算值,或者即使我想计算要重写的属性,该怎么办。Spring可行吗?如何在Spring的中注册任意属性?
需要对项目的控制器部分进行单元测试,但却得到了错误。我相信ModelAndVIew部分导致了这个问题,尽管我曾经嘲弄过它并返回ModelAndVIew,因为它是方法的返回类型。然而,它并不起作用。pom.xml没有任何问题,因此没有添加它。ProjectController: java.lang.IllegalStateException:找不到@SpringBootConfiguration,您
概要文件对于我所需要的似乎有点过分了,我不确定这是否可以通过主注释来实现,因为不同的单元测试可能有不同的模拟。
我不会告诉你有关后台任务的单元测试的任何内容,因为Hangfire没有添加任何特定方法 (除了 IJobCancellationToken 接口参数)去改变任务。使用您最喜爱的工具,并照常写入单元测试。本节介绍如何测试创建的后台任务。 所有的代码示例都使用静态 BackgroundJob 类来告诉你如何做这个或那些东西,只是出于简单演示的目的。但是当你想测试调用的静态方法时,会变得很痛苦。 不用担
我创建了一个包含各种endpoint的Spring Boot应用程序。除了和登录终结点之外,我为其他请求添加了过滤器。所有其他请求应具有: