当使用junit运行测试时,我得到ClassNotFoundException
:
我有一堆测试类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
中。我不认为这里的情况,因为新的MyDataType()
运行良好。
我的运行时和构建时类路径包括包含所需类的jar。
尝试给出方法所需的完整限定名:
Class.forName("com.package.where.class.exists.MyDataType").newInstance();