我在ClassNotFoundException
用junit运行测试时得到:
我有一堆测试 Class Main 的测试用例。Main 类有一个方法,该方法接受一个表示数据类型的字符串,并在内部使用Class.forName( argument ).newInstance()
. 现在,当我手动测试时,这些方法本身可以正常工作。但是在使用 junit 运行测试用例时,我得到ClassNotFoundException
(在方法中)传入的数据类型。
然后我在正在测试的方法中添加了一行:new MyDataType。奇怪的是,当我创建实例的后续行Class.forName( MyDataType ).newInstance()
失败时,操作成功了。
Class Main{
public void someMethod( String dataType ){
new MyDataType(); // suceeds
Class.forName( dataType ).newInstance(); // got Exception when dataType = "MyDataType"
}
}
为什么是这样?当我用谷歌搜索时,我发现许多答案表明MyDataType.class
可能不在classpath
. 我认为这里不是这种情况,因为 newMyDataType()
运行良好。
我的运行时和构建时类路径包括包含所需类的 jar。