如何在Unit Test中从另一个服务访问Spring bean?

时间:2015-06-11 21:05:39

标签: java spring junit

我有一个具有此项目结构的Web应用程序:

app-name
   |- web
   |- service-A
   +- service-B

每个java项目都有自己的应用程序上下文XML配置/注释。现在我在service-B中编写测试,它使用来自service-A的一些Spring bean。 此时,我在Service-B中定义了BaseTest,具有以下配置。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext-KA-service-test.xml", "classpath:service_a_test.mockspring.xml" })
public class BaseTest {
 ...
}
服务-B中的

和Junit测试扩展了BaseTest,如下所示:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext-WS-service-test.xml", "classpath:service_b_test.mockspring.xml" })
public class GeoInformationServiceImpl_2_Test extends BaseTest {
...
}

如果我删除"扩展BaseTest"从服务B,它抛出" java.lang.IllegalStateException:无法加载ApplicationContext"因为找不到Service-A中的某些bean。明显! 但如果我保持这种联系,我会遇到许多其他问题,如测试失败等。 我的配置中的另一个问题是, Service-A指的是Service-B中的bean B1。 Bean B1读取" src / test / resources / mockdata / geo_results.csv"中的文件。但是当在服务A测试中引用B1时,此语句失败,但在服务B测试中工作正常。

我的问题是,在JUnit测试中从service-A引用service-B中的Spring bean的合法方法是什么?

0 个答案:

没有答案