gpt4 book ai didi

java - 如何为调用其他方法的方法编写单元测试?

转载 作者:行者123 更新时间:2023-11-30 06:51:37 26 4
gpt4 key购买 nike

这是一个非常糟糕的代码示例。对于那个很抱歉。我想为 myMethod() 编写单元测试。这只会调用其他方法并返回 String str1。我认为没有必要测试此代码。

public class MyClass{
private String str1;
private String str2;

private void m1(){..}
private String m2(){
// do something
return someString;

}
public String myMethod(String s1){
str2 = s1;
m1();
str1 = m2();
return str1;
}
}

最佳答案

有多种编写单元测试的方法。

A) 你观察行为。您创建被测类的对象,然后调用方法;然后您对返回的值assertThat

B) 当您的对象使用其他 对象时,您可能不得不求助于模拟框架,例如验证您是否看到了对这些对象的预期方法调用。

在您的情况下,这实际上取决于 m1/m2 在做什么。如前所述 - 最好的单元测试是那些检查被测代码的“可观察”行为的单元测试。像那些例子:

@Test(expected=NullPointerException.class)
public void testMyMethodWithNull() {
new MyClass().myMethod(null);
}

上面的代码会检查当用 null 调用你的方法时...抛出 NPE。

@Test
public void testMyMethodWithEmptyString() {
MyClass underTest = new MyClass();
assertThat(underTest.myMethod(""), is("some expected string for empty input"));
}

那个对 EMPTY 输入做了一些不同的检查。

因此,您可以按照自己的方式处理所有有意义的输入。当然,这里的想法是可以通过这种方式检查被测类的所有可能行为。如果还有其他因素在起作用,您当然必须考虑到它们。但理想情况下,情况不应该如此:您应该设计所有代码,以便尽可能轻松地对其进行全面测试;理想情况下,除了此类测试之外,无需编写任何其他内容。

关于java - 如何为调用其他方法的方法编写单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40028812/

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