2012-04-17 19 views
8

Tôi đang gặp phải sự cố lạ ở đây ...Quy tắc JUnit TemporaryFolder tùy ý ném một IOException

Tôi có một JUnit đang thực hiện một vài thử nghiệm. Lớp học này trông giống như sau:

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 
    } 
} 

Lớp thử nghiệm này được sử dụng để hoạt động trong môi trường trước đó của tôi và vẫn hoạt động trong Continuum.

Tuy nhiên, khi khởi chạy từ Eclipse không có, một số hoặc tất cả các bài kiểm tra tùy tiện ném một IOException như:

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) 

Tôi có cùng một vấn đề chính xác chạy JUnit 4,9 hoặc JUnit 4.10 ...

Làm cách nào để khắc phục điều đó để hoạt động bình thường?

+0

Điều đó sẽ hiệu quả. Bạn đang sử dụng 'Runner' nào để chạy thử nghiệm? Họ có đồng thời không? Bạn có thể muốn gỡ lỗi nhiều hơn, tức là sout biến 'thư mục' cũng nhìn thấy nơi nó trỏ khi sự cố xảy ra. –

+0

Bạn có thể nói những gì bạn đang làm trong các bài kiểm tra không? Bạn đang viết thư cho các tập tin? Ngoài ra, bạn có cửa sổ chỉ mục đang chạy? –

+0

Có mục đích của chương trình là xử lý dữ liệu và viết tệp dưới dạng đầu ra. Không có chỉ mục cửa sổ nào đang chạy. –

Trả lời

1

Bạn nên thử tắt bảo vệ chống vi-rút của mình.

Tôi đã gặp sự cố tương tự và sau khi vô hiệu hoá Kaspersky, mọi thứ đều hoạt động tốt.

0

Theo giao diện của nó, điều này có thể có nhiều vấn đề liên quan đến cửa sổ hơn là một vấn đề liên quan đến JUnit. Bằng cách nào đó, bạn có thể bị thiếu quyền tạo thư mục/tệp trong khi đang đăng nhập với tư cách "người dùng có quyền hạn chế".

Tôi đoán bạn có thể thử tạo ra một thư mục yourslef tạm thời, cũng giống như JUnit làm:

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

Nếu tuyên bố trên ném những lỗi tương tự, bạn nên điều tra quyền cửa sổ người dùng của bạn, có thể thử chạy các thử nghiệm dưới người dùng "đầy đủ quyền".