gpt4 book ai didi

java - 在 Java 中测试私有(private)方法

转载 作者:行者123 更新时间:2023-12-01 12:25:45 26 4
gpt4 key购买 nike

我是 Java 编程的初学者。我在针对单元测试工具测试私有(private)方法时遇到问题。编译时没有错误,并且在字段中输入值时得到了预期的结果。

这是我编写的部分代码:

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 应该可以解决问题。

关于java - 在 Java 中测试私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26346284/

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