Tóm tắtResource tập tin không tìm thấy từ trường hợp thử nghiệm JUnit
kiểm tra JUnit của tôi là không tìm thấy các tập tin họ yêu cầu trong quá trình thực hiện. Tôi đang sử dụng Maven để quản lý và biên dịch phụ thuộc.
Chi tiết
Tất cả các file theo yêu cầu của các trường hợp thử nghiệm được đặt tại: src/test/resources
.
Ví dụ: src/test/resources/resourceFile.txt
.
Để truy cập vào một nguồn tài nguyên Tôi sử dụng đoạn mã sau:
URL url = getClass().getResource("/resourceFile.txt").getFile();
File file = new File(url);
Nhưng sau đó file.exists()
lợi nhuận false
. Và lỗi tôi nhận được là:
Tests in error:
myJUnitTestCase(tests.MyJUnitTestClass): /home/me/workspace/Project%20Name/target/test-classes/resourceFile.txt (No such file or directory)
Lưu ý, sau đây cung cấp cho các lỗi tương tự (chú ý loại bỏ /
prefix):
URL url = getClass().getClassLoader().getResource("resourceFile.txt").getFile();
File file = new File(url);
Có vẻ như các tập tin từ src/test/resources
không nhận được sao chép vào target/test-classes
.
Bất kỳ ý tưởng nào?
Các câu hỏi sau đây không giúp
Why Can't I access src/test/resources in Junit test run with Maven?
Loading Properties File In JUnit @BeforeClass
How to deal with the test data in Junit?
phiên bản phần mềm
Ubun tu 12.04
Apache Maven 2.2.1
Java 1.7.0
Eclipse (Java EE IDE cho phát triển Web) Indigo Service Release 2
(cắt ngắn) Maven POM
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.groupId</groupId>
<artifactId>artifactId</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>name</name>
<build>
<finalName>name</finalName>
<directory>target</directory>
<outputDirectory>target/classes</outputDirectory>
<testOutputDirectory>target/test-classes</testOutputDirectory>
<sourceDirectory>src/main/java</sourceDirectory>
<testSourceDirectory>src/test/java</testSourceDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
'Dường như các tệp từ src/test/resources không được sao chép vào mục tiêu/lớp thử nghiệm' Bạn có thực sự xác minh điều đó không? – ftr
Không, tôi là một thằng ngốc ... xin lỗi. Tôi vừa kiểm tra và tôi có thể xác nhận rằng họ thực sự được sao chép ở đó. Có lẽ đó là do "% 20" trong đường dẫn? –
Bạn đang cố gắng mở luồng đầu vào từ tệp đó? Nếu vậy, bạn có thể sử dụng trực tiếp những điều sau đây để thực hiện việc này (thay vì sử dụng URL): .class.getClassLoader(). GetResourceAsStream (tên tệp) –