我有一个简单的单元测试,我想让单元测试加载一个测试属性文件,我已经放置在src/test/resources/test.properties
中,而不是src/main/resources/application.properties
中的属性文件。
我的测试类设置如下:
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@AutoConfigureMockMvc
@TestPropertySource(locations = "classpath:src/test/resources/properties-test.yml")
public class SecurityConfigurationTest {
@MockBean
KafkaConfiguration kafkaConfiguration;
@MockBean
KafkaMonitor kafkaMonitor;
@MockBean
BuildProperties buildProperties;
@Autowired
MockMvc mockMvc;
@Test
public void unauthorizedUser_shouldNotAccessHomePage() throws Exception{
mockMvc
.perform(get("/"))
.andExpect(status().isUnauthorized());
}
}
我的项目文件结构如下所示:
但是我收到了以下错误,表明我没有正确指定此属性文件:Caused by: java.io.FileNotFoundException: class path resource [src/test/resources/test.properties] cannot be opened because it does not exist
我怎样才能在单元测试中使用test.properties
文件而不是application.properties
文件?
2条答案
按热度按时间rkkpypqq1#
在pom.xml中添加一个profiles标记,它指定程序运行时应该选择哪个属性文件。
注意:属性文件的名称必须是application-test.properties。
这将使您的测试属性处于活动状态,但要访问它,您需要配置您的测试资源文件夹,并让intellij知道在运行时使用它。
在Intellij中,您可以更改运行项目的资源文件夹,因此您需要......
1.选择测试资源文件夹。
1.右键单击它。在打开的菜单中,选择修改运行配置并创建新配置。
这意味着为运行测试资源文件夹创建了新的运行配置。
1.运行配置。
s8vozzvw2#
默认情况下,Maven会将
src/test/resources/
文件夹中的所有文件打包到类路径中,所以要通过类路径引用它,应该是:或者,如果要通过系统文件路径引用它,可以将其更改为:
在封面下,它使用
ResourceLoader
来加载文件。