【发布时间】:2012-02-16 10:00:11
【问题描述】:
我正在尝试从在 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());
}
【问题讨论】:
-
你能显示代码片段,它会加载你的文件吗?
-
@Umar 您的意思是加载文件的测试示例?我会为你编辑。
-
只是想知道,当你在 eclipse 中默认有 junit 插件时,你为什么要编写一个运行 junit 的应用程序?
-
@SajanChandran 因为我的工具也在检测测试的类,所以我可以收集一些关于它们的信息。我不只是在运行 JUnit。