我有两个应用程序。我对其中一个应用程序进行了集成单元测试,但是调用另一个应用程序的服务是模拟的(我没有注入真正的服务,而是注入另一个模拟的服务)。
有没有一种可能的方法可以与其他应用程序建立真正的连接,而不必模拟它。
一个简单的例子会很有帮助。
提前致谢!
我有两个应用程序。我对其中一个应用程序进行了集成单元测试,但是调用另一个应用程序的服务是模拟的(我没有注入真正的服务,而是注入另一个模拟的服务)。
有没有一种可能的方法可以与其他应用程序建立真正的连接,而不必模拟它。
一个简单的例子会很有帮助。
提前致谢!
只需注入真正的服务并进行集成测试。问题是确保所有需要注入的东西都可以注入。让我们调用你的服务 foo 和 bar,其中 foo 依赖于 bar。如果 bar 依赖于应用程序服务器中的某些内容,那么在单元期间启动它可能会出现问题,因为您没有在应用程序服务器中运行应用程序。
集成测试很重要也很有价值,但需要仔细考虑设置。我设法在我的应用程序中设置集成测试的方式是使用弹簧配置文件来分离配置组合。例如,我调用了配置文件。
因此,您可以使用正确的配置文件启动测试,该配置文件设置所有要注入的正确 bean,就像这样。
@ActiveProfile(profiles={"deveolpment","standalone"})
@RunWith ... etc other spring annotations to configure a test
public class SomeJunitTest {
}
使用配置文件可以很容易地对为每个测试配置哪些 bean 集进行细粒度控制。
同样对于集成测试,我发现 TestNG 更容易使用 JUnit,因为它具有使编写集成测试更容易的功能。