假设你有一个班级
class NeedToTestThisClass{
private String string1;
....
....
private void needToTestThisMethod(){
if(string1.equals("a")){
...
}
else{
....
}
}
}
如何使用不同的字符串值测试此方法?该字符串没有setter,也没有包含在构造函数中。我无法更改代码。 我有力量。 问题很简单,但无法弄清楚方法。感谢。
答案 0 :(得分:3)
您可以使用PowerMock绕过封装
@Test
public void test() {
NeedToTestThisClass tested = new NeedToTestThisClass();
WhiteBox.setInternalState(tested,"string1", "someValue");
Whitebox.invokeMethod(tested, "needToTestThisMethod");
//here verify something
}
答案 1 :(得分:1)
通常,通过测试实际使用这些私有方法的公共方法来测试这些类型的方案。一般来说,尝试测试改变string1变量的流程,然后通过测试来触及私有方法。