如何使用JUnit在Spring中测试单个服务?

时间:2014-12-18 15:05:05

标签: java spring junit

我有一个@Service类,可以注入一些属性。 我想在注射过程正常工作的情况下编写一个junit测试。

如何在不加载完整的应用程序上下文配置的情况下定义JUnit测试?

@Service
public class MyService {
    @Value("${test.property}")
    private String value;

    public String getValue() {  return value; }
}

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class MyTest {
   @Autowired
   private MyService service;

   @Test
   public void test() {
      assertNotNull(service.getValue());
   }
}

但是当我跑这个时:

java.lang.IllegalStateException: Neither GenericXmlContextLoader nor AnnotationConfigContextLoader was able to detect defaults, and no ApplicationContextInitializers were declared for context configuration 
    at org.springframework.test.context.support.AbstractDelegatingSmartContextLoader.processContextConfiguration(AbstractDelegatingSmartContextLoader.java:208)
    at org.springframework.test.context.support.AbstractTestContextBootstrapper.buildMergedContextConfiguration(AbstractTestContextBootstrapper.java:348)
    at org.springframework.test.context.support.AbstractTestContextBootstrapper.buildMergedContextConfiguration(AbstractTestContextBootstrapper.java:305)

2 个答案:

答案 0 :(得分:1)

您没有指定bean文件从哪里注入您在测试中使用@Autowired注释的字段。你应该有类似的东西:

@ContextConfiguration(locations = {
"classpath:applicationContext.xml",
"classpath:junit-applicationContext.xml"
})

答案 1 :(得分:-2)

查看unitils

它有一个测试弹簧的模块。如果您的服务与数据库交互,它也非常方便。