[英]Testing a private method in Java
我是Java編程的初學者。 我在針對單元測試工具測試私有方法時遇到問題。 編譯時沒有錯誤,並且在字段中輸入值時得到了預期的結果。
這是我編寫的代碼的一部分:
public class Title {
private String getNewString() {
if (newName == null || "".equals(newName)) {
return newName;
} else {
return (newName.substring(0,1).toUpperCase() + newName.substring(1).toLowerCase());
}
}
}
下面是給我錯誤的測試工具: <method>
不存在,或者拼寫錯誤
@Test
public void TestGetNewString() {
//String parameter
Class[] paramString = new Class[1];
paramString[0] = String.class;
try {
//load the Title at runtime
Class cls = Class.forName("Title");
Object obj = cls.newInstance();
//call the printItString method, pass a String param
Method method = cls.getDeclaredMethod("getNewString", paramString);
method.setAccessible(true);
String returnVal1 = (String) method.invoke(obj, new String("Peter"));
String returnVal2 = (String) method.invoke(obj, new String("PETER"));
String returnVal3 = (String) method.invoke(obj, new String("PeTEr"));
int modifiers = method.getModifiers();
assertEquals("getNewString does not format the name correctly. \n", "Peter", returnVal1);
assertEquals("getNewString does not format the name correctly. \n", "Peter", returnVal2);
assertEquals("getNewString does not format the name correctly. \n", "Peter", returnVal3);
assertEquals("Method \"getNewString()\" is not marked private. \n", true, Modifier.isPrivate(modifiers));
} catch (NoSuchMethodException e) { // Field does not exist
throw new AssertionError("Method \"getNewString()\" does not exist, or is spelled wrong. \n");
} catch (Exception e) {
e.printStackTrace();
}
}
關於我在哪里犯錯的任何建議?
您的方法正在調用:
Method method = cls.getDeclaredMethod("getNewString", paramString);
然后將paramString
定義為:
Class[] paramString = new Class[1];
這意味着它將尋找使用一個參數的方法簽名 。 getNewString
但是沒有任何參數。
刪除paramString
應該可以解決問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.