使用junit运行测试时,我得到ClassNotFoundException
:
我有一堆测试Class Main的测试用例。 Main类有一个方法,它接受表示数据类型的字符串,并使用Class.forName( argument ).newInstance()
在内部构建该类型的实例。现在,当我手动测试时,方法本身工作正常。但是在使用junit运行测试用例时,我获得传入的数据类型的ClassNotFoundException
(在方法中)。
然后我添加了一行:新的MyDataType到正在测试的方法。奇怪的是,当我通过Class.forName( MyDataType ).newInstance()
创建实例的成功行失败时,操作会成功。
Class Main{
public void someMethod( String dataType ){
new MyDataType(); // suceeds
Class.forName( dataType ).newInstance(); // got Exception when dataType = "MyDataType"
}
}
这是为什么?当我用Google搜索时,我发现了一些答案,表明MyDataType.class
可能不在classpath
。我不认为这是因为新的MyDataType()
运行正常。
我的运行时和构建时类路径包含包含所需类的jar。
答案 0 :(得分:4)
尝试提供method所需的完整限定名称:
Class.forName("com.package.where.class.exists.MyDataType").newInstance();