这是关于测试的问题。
我想测试我的服务并需要注入工作,但我不需要 webservice 启动。
这是我的代码:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyWebApp.class)
@WebAppConfiguration
@Transactional
public class MyUserServiceTest {
@Inject
private MyUserService myUserService;
@Test
public void testRegister(){
myUserService.registerNew();
}
}
当我这样运行时:
@RunWith(SpringJUnit4ClassRunner.class)
public class MyUserServiceTest {
我收到此错误:
Cannot load an ApplicationContext with a NULL 'contextLoader'
像这样:
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = MyWebApp.class)
public class MyUserServiceTest {
我明白了:
java.lang.IllegalStateException: Failed to load ApplicationContext
当我添加@WebAppConfiguation
测试时,我会运行 webapplication ,这需要花费大量时间。
我现在使用MyWebAppTest.class,如下所示:
@ComponentScan
@EnableAutoConfiguration(exclude = { MetricFilterAutoConfiguration.class, MetricRepositoryAutoConfiguration.class })
@EnableConfigurationProperties({ JHipsterProperties.class, LiquibaseProperties.class })
public class MyWebAppTest { }
但是开始使用web服务....
答案 0 :(得分:1)
在src/test/java
中,您可以定义一个MyTestContext
类,它将排除某些配置,但定义一个具有足够依赖关系的spring应用程序上下文,以使您的测试通过。
@SpringApplicationConfiguration(classes = MyTestContext.class)
您可以首先定义它与MyWebApp
类似,让测试通过然后排除一些配置,直到您达到最小的依赖关系,如果您的MyTestContext
类非常特定于您的服务测试你也可以定义为测试的静态内部类,这是Spring测试中常见的模式。