2011-08-17 34 views
11

Tôi đang sử dụng ant và TestNG 6.1.1, và tôi đã thử nghiệm của tôi chỉ làm việc tốt ngày hôm qua. Hôm nay khi tôi cố gắng chạy thử nghiệm, tôi nhận được một NoClassDefFoundError liên quan đến com/beust/jcommander/ParamException. Đây là kết quả:Đột nhiên không thể chạy kiểm tra TestNG từ kiến ​​([testng] Gây ra bởi: java.lang.ClassNotFoundException: com.beust.jcommander.ParameterException)

[copy] Copying 1 file to /Users/djohnson/src/webapp/components/build/tmp 
[testng] Exception in thread "main" java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException 
[testng] Caused by: java.lang.ClassNotFoundException: com.beust.jcommander.ParameterException 
[testng] at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
[testng] at java.security.AccessController.doPrivileged(Native Method) 
[testng] at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
[testng] at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
[testng] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
[testng] at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
[testng] The tests failed. 

đây là file .xml Tôi đang sử dụng:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 
<suite name="Single Method Suite"> 
    <test name="Single Method Test"> 
    <classes> 
     <class name="DhcpTest"> 
     <methods> 
      <exclude name=".*" /> 
      <include name="setGetEnabledTest" /> 
     </methods> 
     </class> 
    </classes> 
    </test> 
</suite> 

Tôi cũng đã chỉ định đường dẫn đầy đủ cho các lớp không có may mắn. Tôi đã kiểm tra classpath và mọi thứ có vẻ ổn, có ai có ý tưởng gì về điều này không?

+0

Được rồi, vì vậy tôi đã thêm jcommander-1.17.jar vào classpath, và tôi vẫn nhận được lỗi tương tự. – anotherdjohnson

+0

Bây giờ tôi đã đăng bài này cho tất cả thế giới để xem, tôi phát hiện ra rằng jcommander đã không thực sự trong classpath này. Tôi chắc chắn tôi đã thấy nó ở đó, nhưng chắc chắn nó đã mất tích. Bây giờ nó không thể tìm thấy bài kiểm tra, không chắc chắn lý do tại sao, bởi vì tôi đã ba kiểm tra classpath, và nó chắc chắn ở đó. – anotherdjohnson

Trả lời

8

Nếu bạn đang sử dụng kiến, JCommander phải ở trong testng.jar, vì vậy tôi nghĩ tệp testng.jar của bạn có thể bị hỏng.

+0

Cedric, bạn đã chính xác, tôi đã tải xuống một bản sao của testng.jar từ trang web và nó hoạt động tốt với việc có một cái bình jcommander. Chúng tôi đang sử dụng ivy vì vậy dường như nó có một tập tin bị hỏng trong bộ nhớ cache. Tôi sẽ phải xem xét việc chăm sóc đó. Cảm ơn bạn đã giúp tôi, nhưng một lần nữa. – anotherdjohnson

+0

Rất vui khi được nghe. FYI, 'rm -rf ~/.ivy2/org.testng' nên giải quyết vấn đề. –

+1

Cedric, nó chỉ ra rằng các tập tin tôi đang sử dụng là cùng một tập tin đó là trong kho lưu trữ Maven 2, do đó, loại bỏ nó từ bộ nhớ cache ivy của tôi không giúp đỡ. Có vấn đề với tệp trong bộ nhớ cache hay có điều gì khác đang xảy ra ở đây không? – anotherdjohnson

0

Có thể testng.jar không có trong classpath.

+0

Như tôi đã đề cập trong bài đăng gốc, tôi đã kiểm tra đường dẫn lớp. Vui lòng xem phản hồi của Cedric ở trên. – anotherdjohnson

4

Nếu bạn sử dụng Maven thử thêm này để pom.xml của bạn

<dependency> 
    <groupId>com.beust</groupId> 
    <artifactId>jcommander</artifactId> 
    <version>1.30</version> 
</dependency> 
3

jcommander.jar (ví dụ jcommander-1.29.jar) nên có mặt trên thư mục fileset được nêu tại build.xml

Bạn có thể tải về từ: http://mvnrepository.com/artifact/com.beust/jcommander/1.27

OR,

JCommander nên bên testng.jar trong sử dụng kiến. Tệp testng.jar của bạn có thể bị hỏng, vì vậy hãy thay thế tệp testng.jar cũ bằng tệp mới.

0

Tôi gặp vấn đề tương tự với dự án không phải Maven. Tôi lấy bình thử nghiệm từ Maven Central, nhưng nó không chứa tất cả các phụ thuộc của TestNG. Tải xuống bình trực tiếp từ trang TestNG đã giải quyết vấn đề, vì nó chứa các phụ thuộc.

tôi nên đã chú trọng hơn đến các hướng dẫn trên TestNG's download page ...

Phiên bản mới nhất của TestNG có thể được tải về từ Maven Trung hoặc vào đây để sử dụng kiến ​​.

0

bắt đầu kiến ​​của tôi làm việc khi tôi đã tải jcommandar jar từ kho Maven và thêm nó vào file jar của tôi

Nhưng này vấn đề Bắt đầu đến với testng 6.8.5 phiên bản

0

Vấn đề ở đây là các phiên bản nhất định của bình thử nghiệm không có mã jar jcommander bên trong chúng. Kết quả là, bạn phải thêm classpath vào jar Jcommander riêng biệt.

Thêm jar Jcommander vào classpath của bạn khi bạn chạy nó sẽ sửa chữa vấn đề, hy vọng

Các vấn đề liên quan