2013-03-09 52 views
0

我有两个应用程序。我为其中一个应用程序进行了集成单元测试,但调用其他应用程序的服务被模拟(而不是注入真实服务,我注入了另一个被模拟的服务)。集成测试,而不嘲笑与其他应用程序的连接

是否有一种可能的方式与其他应用程序建立真正的连接而不必将其嘲讽。

一个简单的例子会非常有帮助。

在此先感谢!

+0

我认为这是嘲笑事情的好习惯。您需要在其他应用程序上测试您的服务,但不能通过第一个应用程序进行测试。 – benzonico 2013-03-09 15:07:33

回答

0

只是注入真实的服务和做你的集成测试。问题是要确保所有需要注入的东西都可以注入。让我们打电话给您的服务foo和酒吧,这取决于酒吧。如果栏取决于应用程序服务器中的某些内容,则在单元期间启动它可能会造成问题,因为您未在应用程序服务器中运行该应用程序。

集成测试非常重要且有价值,但它需要仔细考虑设置。我设法在应用程序中设置集成测试的方法是使用弹簧配置文件来分离配置组合。例如我有配置文件调用。

  • 生产
  • 发展
  • 容器
  • 独立

所以这样你可以有一个与该菜单中的所有正确的豆等注入适当的配置文件启动测试所以。

@ActiveProfile(profiles={"deveolpment","standalone"}) 
@RunWith ... etc other spring annotations to configure a test 
public class SomeJunitTest { 
} 

使用配置文件可以非常容易地对每个测试配置哪组bean进行细粒度控制。

此外,对于integartion测试,我发现TestNG更容易使用该JUnit,因为它具有使写集成测试更容易的功能。

+0

感谢您的回答!但我应该如何配置一切?我的意思是,我不在应用程序服务器中运行测试。在Spring文档的测试章节(http://static.springsource.org/spring/docs/3.0.x/reference/testing.html)中,推荐这样做。我应该如何继续? – meniari 2013-03-10 13:10:13