java - 在java中进行单元测试时如何跳过一段代码

标签 java unit-testing integration-testing

我正在开发一个带有单元/集成测试的 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/

相关文章:

java - Rest Assured 中的 Xml 断言

java - 如何获取二维数组的总长度? java

iphone - UIKit 和单元测试

ruby-on-rails - 我应该写这些测试用例吗?

spring-boot - Spring Boot 2.x Repackage用于与Gradle的集成测试

unit-testing - 当我已经编写了单元测试和功能测试时,我将从集成测试中获得什么值(value)

java - 安卓相机 : app passed NULL surface

java - Materialdesign 工具栏后退箭头在 Lollipop 之前的版本中不显示

java - 启动 Maveryx 测试应用程序时如何指定环境变量?

unit-testing - OOP 框架中的测试驱动开发