gpt4 book ai didi

java - 如何在 jUnit 中测试一个非常简单的 void 方法?

转载 作者:行者123 更新时间:2023-12-02 03:39:26 33 4
gpt4 key购买 nike

我知道有几个关于 void-method 单元测试的问题,但我的问题不同。
我正在学习java,所以我的老板给了我一些对我的任务有不同要求的任务。

在我的实际任务中,有一个要求,jUnit测试必须覆盖>60%。所以我需要测试一个非常简单的方法来达到这个60%。方法如下:

public void updateGreen() {
// delete this outprint if the Power Manager works
System.out.println(onCommand + "-green");
// p = Runtime.getRuntime().exec(command + "-green");
// wait until the command is finished
// p.waitFor();
}

由于实习生问题,我无法使用 Runtime 任务执行该命令。所以这个方法里只有一个System.out

我有多种类似的方法,因此该方法的测试将覆盖我整个代码的 10% 以上。

测试这样的方法有用吗?当是时,如何?

最佳答案

如果有很多这样的方法,您可能想要在这里测试的是 updateScreen() 使用正确的字符串“some-command-green”并且 System.out 正在被调用。为此,您可能需要将 System.out 提取到对象字段中并模拟它(即使用 Mockito 的 spy())来测试提供给的字符串println.

class MyClass{
PrintStream out = System.out;

public void updateGreen() { ... }
}

测试中:

@Test
public void testUpdate(){
MyClass myClass = new MyClass();
myClass.out = Mockito.spy(new PrintStream(...));

// mock a call with an expected input
doNothing().when(myClass.out).println("expected command");

myClass.updateGreen();

// test that there was a call
Mockito.verify(myClass.out, Mockito.times(1)).println("expected command");
}

关于java - 如何在 jUnit 中测试一个非常简单的 void 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20612946/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com