9

我在这里遇到了一个奇怪的问题......

我有一个执行一些测试的 JUnit。这个类如下所示:

public class MyTest {

    @Rule
    public TemporaryFolder folder = new TemporaryFolder();

    @Test
    public void myTest1() throws IOException {
        String destinationPath = folder.newFile("destination1.txt").getPath();
        // Do things
    }

    @Test
    public void myTest2() throws IOException {
        String destinationPath = folder.newFile("destination2.txt").getPath();
        // Do things
    }

    @Test
    public void myTest3() throws IOException {
        String destinationPath = folder.newFile("destination.txt").getPath();
        // Do things
    }
}

这个测试类曾经在我以前的环境中工作,现在仍然在 Continuum 中工作。

然而,当从 Eclipse 启动时,没有、某些或所有测试会任意抛出IOException诸如:

java.io.IOException: The system cannot find the path specified
    at java.io.WinNTFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(File.java:883)
    at org.junit.rules.TemporaryFolder.newFile(TemporaryFolder.java:53)
    at MyTest.myTest2(MyTest.java:50)

我在运行 JUnit 4.9 或 JUnit 4.10 时遇到了完全相同的问题......

我该如何解决它才能正常工作?

4

3 回答 3

1

您应该尝试禁用防病毒保护。

我遇到了同样的问题,禁用卡巴斯基后一切正常。

于 2012-12-20T15:27:43.753 回答
0

从表面上看,这可能更像是一个与 Windows 相关的问题,而不是 JUnit 问题。不知何故,您在以“受限权限用户”身份登录时可能会失去创建文件夹/文件的权利。

我想您可以尝试自己创建一个临时文件夹,就像 JUnit 所做的那样:

        File folder= File.createTempFile("junit", "");

如果上面的语句抛出同样的错误,你应该调查你的 windows 用户权限,也许尝试在“完全权限”用户下运行测试。

于 2012-06-13T15:30:28.167 回答
0

对我来说似乎有帮助的是明确创建根文件夹。在您的情况下,将folder.create()某个地方放入您的代码中。

丑陋,我知道。

于 2018-05-27T08:09:56.787 回答