Jhipster:在没有网络服务器的情况下运行junittest

时间:2016-06-17 08:43:18

标签: spring testing spring-boot jhipster

这是关于测试的问题。

我想测试我的服务并需要注入工作,但我不需要 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服务....

1 个答案:

答案 0 :(得分:1)

src/test/java中,您可以定义一个MyTestContext类,它将排除某些配置,但定义一个具有足够依赖关系的spring应用程序上下文,以使您的测试通过。

@SpringApplicationConfiguration(classes = MyTestContext.class)

您可以首先定义它与MyWebApp类似,让测试通过然后排除一些配置,直到您达到最小的依赖关系,如果您的MyTestContext类非常特定于您的服务测试你也可以定义为测试的静态内部类,这是Spring测试中常见的模式。