我正在开发一个带有单元/集成测试的 Java 网络应用程序。应用程序被部署到 Jetty 并在运行 Maven 的集成测试阶段时使用 H2 数据库。我有一个从无法迁移到 H2 db 的 dao 层调用的 oracle 函数,因此我想在运行测试用例时模拟/跳过代码中的这一部分。
我想有一个标志,它可以判断我是否在测试模式下运行应用程序并将条件放入代码中,但对我来说似乎不是更干净的方法。请提出实现这一目标的最佳方法。
最佳答案
将 Oracle native 调用提取到一个单独的类中(可能是某个 DAO)。将该 DAO 注入(inject)到使用它的类中。创建该 DAO 的第二个实现,除了调用 Oracle 之外什么也不做。在集成测试期间注入(inject)后者的实现。
避免在代码中使用标志。如果您使用的是 Spring,请使用将有选择地创建一个实现或另一个实现的构建配置文件。
这就是依赖注入(inject)如何帮助您测试代码:如果您想模拟系统的某些部分,只需注入(inject)模拟版本即可。
关于java - 在java中进行单元测试时如何跳过一段代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735874/