如何对使用全局变量的函数进行单元测试?
How to unit-test function that uses global variable?
假设你有一个 class
class NeedToTestThisClass{
private String string1;
....
....
private void needToTestThisMethod(){
if(string1.equals("a")){
...
}
else{
....
}
}
}
如何使用不同的字符串值测试此方法?该字符串没有 setter,并且不包含在构造函数中。我无法更改代码。
我有 powermock。
题很简单,就是想不通。谢谢。
通常,这些类型的场景是通过测试实际使用这些私有方法的 public 方法来测试的。通常尝试测试改变 string1 变量的流程,然后您的私有方法会被测试触及。
可以使用PowerMock绕过封装
@Test
public void test() {
NeedToTestThisClass tested = new NeedToTestThisClass();
WhiteBox.setInternalState(tested,"string1", "someValue");
Whitebox.invokeMethod(tested, "needToTestThisMethod");
//here verify something
}
假设你有一个 class
class NeedToTestThisClass{
private String string1;
....
....
private void needToTestThisMethod(){
if(string1.equals("a")){
...
}
else{
....
}
}
}
如何使用不同的字符串值测试此方法?该字符串没有 setter,并且不包含在构造函数中。我无法更改代码。 我有 powermock。 题很简单,就是想不通。谢谢。
通常,这些类型的场景是通过测试实际使用这些私有方法的 public 方法来测试的。通常尝试测试改变 string1 变量的流程,然后您的私有方法会被测试触及。
可以使用PowerMock绕过封装
@Test
public void test() {
NeedToTestThisClass tested = new NeedToTestThisClass();
WhiteBox.setInternalState(tested,"string1", "someValue");
Whitebox.invokeMethod(tested, "needToTestThisMethod");
//here verify something
}