2012-02-16 97 views
2

我试图从在Eclipse中正在开发中,像这样的应用程序运行JUnit测试:编程以外的Eclipse项目的运行JUnit测试

JUnitCore junitCore = new JUnitCore(); 
ClassLoader cl = Main.class.getClassLoader(); 
Class<?> test = cl.loadClass("test.TestCase1"); 
Result r = junitCore.run(test); 

这运行正常,但如果测试用例需要使用一些文件,我得到一个FileNotFoundException。在Eclipse项目中运行相同的测试,测试没有这样的错误。我认为这是因为我的JVM的工作目录(在user.dir属性中定义)不同于Eclipse项目。据我所知,我不能在正在运行的JVM中更改user.dir

我该怎么做才能改变这种行为?我唯一的选择是使用与Eclipse项目相同的工作目录来启动新的JVM吗?如果是这样,我该怎么做,最好不要使用像Ant这样的工具?

编辑: 这是一个通过了Eclipse项目测试的例子,并产生FileNotFoundException当我编程方式运行,它的项目之外:

@Test 
public void test() throws Exception { 
    FileInputStream fstream = new FileInputStream("test1.txt"); 
    DataInputStream in = new DataInputStream(fstream); 
    BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
    assertEquals("file content", br.readLine()); 
} 
+0

您能否显示加载您的文件的代码片段? – Anton 2012-02-16 10:11:39

+0

@Umar你的意思是加载文件的测试示例?我会为你编辑它。 – aperez 2012-02-16 10:35:08

+0

只是好奇地想知道,为什么你想写一个应用程序来运行junit,当你在eclipse中默认有junit插件? – 2012-02-16 15:33:27

回答

0

试试这个代码

new BufferedReader(new InputStreamReader(this.getClass().getResourceAsStream("filename"))); 

如果你的文件和java类在同一个目录下,它应该被加载。

更新

在这种情况下,尝试指定工作目录当您运行JUnits测试

-Duser.dir=somedir 
+0

谢谢你的回答。不幸的是,我无法更改项目源代码,包括测试。 – aperez 2012-02-16 11:04:37

0

尝试检索当前目录JUnit测试中,然后创建一个新的文件浏览到test1.txt

String currentDirectory = new File("").getAbsolutePath(); 

FileInputStream fstream = new FileInputStream(currentDirectory+"\\XYZ\\test1.txt"); 
相关问题