我试过了:
@RunWith(SpringJUnit4ClassRunner.class) @EnableAutoConfiguration(exclude=CrshAutoConfiguration.class) @SpringApplicationConfiguration(classes = Application.class) @WebAppConfiguration public class LikeControllerTest {
但是,CRaSSHD仍会启动。虽然目前它不会损害测试,但我想在单元测试期间禁用不必要的模块,以加快速度并避免潜在的冲突。
最佳答案并不指向更简单,更灵活的解决方案。
@TestPropertySource(properties= {"spring.autoconfigure.exclude=comma.seperated.ClassNames,com.example.FooAutoConfiguration"}) @SpringBootTest public class MySpringTest {...}
测试类上方的注释。这意味着其他测试不受当前测试的特殊情况的影响。如果存在影响大多数测试的配置,请考虑使用spring配置文件代替当前的最佳答案。
我有一个类似的用例,我想隔离地测试一个Spring Boot配置的存储库(在我的情况下,没有Spring Security自动配置,这会使我的测试失败)。@SpringApplicationConfiguration用途SpringApplicationContextLoader,并且有一个JavaDoc说明
@SpringApplicationConfiguration
SpringApplicationContextLoader
可用于测试非Web功能(例如存储库层)或启动完全配置的嵌入式Servlet容器。
但是,就像你自己一样,我无法弄清楚如何配置测试以仅使用主要配置入口点(即,使用的方法)来测试存储库层@SpringApplicationConfiguration(classes = Application.class)。
@SpringApplicationConfiguration(classes = Application.class)
我的解决方案是创建一个专用于测试的全新应用程序上下文。所以在src / test / java中,我在名为repo的子包中有两个文件
RepoIntegrationTest.java
TestRepoConfig.java
哪里RepoIntegrationTest.java有
@RunWith(SpringJUnit4ClassRunner.class) @SpringApplicationConfiguration(classes = TestRepoConfig.class) public class RepoIntegrationTest {
并且TestRepoConfig.java有
@SpringBootApplication(exclude = SecurityAutoConfiguration.class) public class TestRepoConfig {
这让我摆脱了麻烦,但是如果Spring Boot团队的任何人都可以提供替代的推荐解决方案,那将非常有用