使用Class.forName(.)时,Junit发生ClassNotFoundException异常.getInsta



当使用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();

相关内容

  • 没有找到相关文章

最新更新