private void ConvertString(ABC object)
{
String head = "";
String tail="string_tail";
if(!tail.isEmpty())
{
String converter = new StringConvert();
head = converter.convert(tail, TYPE1);
setHeadToTail(head,object);
}
}
private void setHeadToTail(String head, ABC object)
{
List<Mixture> values=object.getValues();
if (values!=null)
{
for (Mixture Values1 : values)
{
if (Values1 instanceof NumMixture)
{
((NumMixture) Values1 ).setTail(head);
}
}
}
}
我想为ConvertString方法编写单元测试,以检查天气转换后的值“ head”等于在setHeadToTail()中传递的值“ head”。 有人可以帮忙吗?
@测试 公共无效test_ConvertedValue()引发异常{
ABC obj1=methodToSetSomeValues();
Method method=Project.class.getDeclaredMethod("ConvertString", ABC.class);
method.setAccessible(true);
method.invoke(new Project(), obj1);
String expectedVal= "1234";
ArgumentCaptor<String> argumentCaptor=ArgumentCaptor.forClass(String.class);
verifyPrivate(new Project()).invoke("setHeadToTail", argumentCaptor.capture(), obj1);
assertEquals(expectedVal,argumentCaptor.getValue());
}
在此测试用例中,我要检查转换的“ head”的值是否等于在setHeadToTail()中传递的参数,即head,但这不起作用。
答案 0 :(得分:1)
我刚开始时也有同样的问题。基本上,您可以将private
方法看作只是代码,就好像它根本不在方法中一样。它只是为了使您的代码更具可读性或删除样板。因此,如果要测试功能,则需要测试调用它的方法。
public void someMethod() { // test this
// some code
privateMethod();
// some more code
}
private void privateMethod() {
// some code
}
在进行单元测试someMethod()
时,就像privateMethod()
的内容根本没有任何方法一样。
编辑:对于您而言,有多少个嵌套private
方法并不重要,请测试调用它们的非私有方法,就好像它们是1个大代码块一样。