Bub*_*lik 3 java testing spring spring-boot
我有简单的Spring Boot Web服务,在其中使用.properties
文件进行配置。作为春季邮件配置的示例,我mailing.properties
在src/main/resources/config/
文件夹中有一个单独的文件。
在主应用程序中,我使用以下命令将其包括在内:
@PropertySource(value = { "config/mailing.properties" })
Run Code Online (Sandbox Code Playgroud)
问题出现在测试时,我想使用该文件中的相同属性,但是当我尝试使用它时,我得到了fileNotFaundExeption
。
问题是:
src/test
文件夹中拥有单独的资源,还是可以从src/main
文件夹访问资源,如果可以,如何?UPDATE添加了源
测试类别:
@RunWith(SpringRunner.class)
@SpringBootTest
@TestPropertySource("classpath:config/mailing.properties")
public class DemoApplicationTests {
@Autowired
private TestService testService;
@Test
public void contextLoads() {
testService.printing();
}
}
Run Code Online (Sandbox Code Playgroud)
服务等级:
@Service
public class TestService
{
@Value("${str.pt}")
private int pt;
public void printing()
{
System.out.println(pt);
}
}
Run Code Online (Sandbox Code Playgroud)
主要应用类别:
@SpringBootApplication
@PropertySource(value = { "config/mailing.properties" })
public class DemoApplication {
public static void main(String[] args)
{
SpringApplication.run(DemoApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以@TestPropertySource
在测试类中使用注释。
例如,您在mailing.properties
文件中具有以下属性:
mailFrom=fromMe@mail.com
只是注释@TestPropertySource("classpath:config/mailing.properties")
您的测试课。
您应该能够读出带有@Value
注释的属性。
@Value("${fromMail}")
private String fromMail;
Run Code Online (Sandbox Code Playgroud)
为了避免在多个测试类上对此注释添加注释,您可以实现一个超类或元注释。
编辑1:
@SpringBootApplication
@PropertySource("classpath:config/mailing.properties")
public class DemoApplication implements CommandLineRunner {
@Autowired
private MailService mailService;
public static void main(String[] args) throws Exception {
SpringApplication.run(DemoApplication.class, args);
}
@Override
public void run(String... arg0) throws Exception {
String s = mailService.getMailFrom();
System.out.println(s);
}
Run Code Online (Sandbox Code Playgroud)
MailService:
@Service
public class MailService {
@Value("${mailFrom}")
private String mailFrom;
public String getMailFrom() {
return mailFrom;
}
public void setMailFrom(String mailFrom) {
this.mailFrom = mailFrom;
}
}
Run Code Online (Sandbox Code Playgroud)
DemoTestFile:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = DemoApplication.class)
@TestPropertySource("classpath:config/mailing.properties")
public class DemoApplicationTests {
@Autowired
MailService mailService;
@Test
public void contextLoads() {
String s = mailService.getMailFrom();
System.out.println(s);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16861 次 |
最近记录: |