我想在没有给出配置文件的情况下测试我的Spring Boot应用程序。在这种情况下,应用程序应该在创建bean MyConfig
时抛出异常。
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
@Bean
public MyConfig myConfig() throws IOException {
if (no config file) throw new NoConfigFileException();
}
}
我有一个测试,测试是否构建了Spring应用程序的上下文:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyApplication.class)
@TestPropertySource(locations="classpath:file_with_existing_config_file_path.properties")
public class MyApplicationTest {
@Test
public void contextLoads() {
}
}
此测试失败 - 正如预期的那样(因为myConfig
方法抛出NoConfigFileException
)。不幸的是,我不能把灯变成绿色"使用注释@Test(expected = NoConfigFileException.class)
。
如果不是我所得到的唯一一种测试方法,我应该在哪里预期异常?
答案 0 :(得分:1)
编写自动化测试时的黄金法则是 - >每个测试方法覆盖一个测试用例(除非您进行参数化测试)。在我看来,你正在考虑违反这条规则。
考虑单独的测试类(您没有指定属性文件),它只测试此方面或您的逻辑。这样您就可以使用@Test(expected = NoConfigFileException.class)
。
这样,如果没有配置文件加载到Spring Context中,您可以强制应用程序查找文件并提前失败。