java - 仅在测试时运行代码

标签 java testing

我只想在测试运行时执行一个方法。

这是一个集成测试的完成。当我运行集成测试时,我想生成一个包含对象状态的 json 文件。

我想在我的代码中做这样的事情:

if(environnement == TEST) {
   // save object as json
}

你知道其他方法吗?少废话?

问候

最佳答案

我通常使用这种模式提供测试“ Hook ”

public class MyObject {

    public void doStuff() {
        // stuff to do

        onCompleteStuff();
    }

    protected void onCompleteStuff() {
    }
}

然后在测试代码中,您可以创建一个 MyObject 的子类来执行您的仅测试操作:

private MyObject newMyObject() {
 return new MyObject() {
   @Override
   protected void onCompleteStuff() {
       saveObjectAsJson();
   }
 };
}

这样做的好处是将测试代码保留在主构建之外。如果您必须在测试中使用模拟,它也会起作用。例如,使用优秀的 Mockito 库:

MyObject foo=Mockito.spy(new MyObject());

doAnswer(new Answer<Object>() {
  @Override
  public Object answer(InvocationOnMock invocation) throws Throwable {
    saveObjectToJson();
    return null;
  }
}).when(foo).onCompleteStuff();

关于java - 仅在测试时运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29164706/

相关文章:

java - 解决 Java Spring 应用程序中的竞争条件的最佳方法是什么?

java - 为什么 JTextArea 可以滚动,但不能滚动?

java - 检查数组中的整数是否在范围内

java - Virtualbox 在 Linux 上重置 vboxnet0 的 IP 地址

testing - 如何从 "main()"测试 "go test"例程?

java - 在哪里可以找到 oracle.security.jps.service.credstore.Credential jar

java - 如何插入换行符作为单元格的数据?

swift - 使用带有 UI 测试的 Cucumberish 从 Storyboard加载 Controller

testing - 自动测试应用程序可执行文件(基于 Windows 的应用程序)

javascript - 使用请求方法登录Cypress