测试中的Maven类路径问题

时间:2014-03-15 14:13:55

标签: java maven junit

我正在敲打这个墙上的头......

我的应用程序在部署时运行良好,真的,我想知道为什么我需要测试:)。

mvn test给了我:

Tests run: 5, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.008 sec <<< FAILURE!
testAddTo_Email(org.red_angus.utils.mail.test.MailMessageTest)  Time elapsed: 0.007 sec  <<< ERROR!
java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/mail/internet/InternetAddress
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)

以下是POM的摘要:

   <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>6.0</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>javax.mail-api</artifactId>
        <version>1.5.1</version>
    </dependency>

    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>mailapi</artifactId>
        <version>1.5.1</version>
    </dependency>

    <dependency>
        <groupId>com.sun.mail</groupId>
        <artifactId>smtp</artifactId>   
        <version>1.5.1</version>
    </dependency>

    <dependency>
        <groupId>net.htmlparser.jericho</groupId>
        <artifactId>jericho-html</artifactId>
        <version>3.3</version>
    </dependency>

帮我节省周末;)

1 个答案:

答案 0 :(得分:2)

来自an other answer on SO

  

javax:javaee-api仅用于编译,而不是用于运行,包括单元测试。如果您需要适合运行的类,那么您确实需要一个完整的Java EE应用程序服务器。

这就是为什么当你的应用程序部署在真实的应用服务器上而不是在运行测试时它可以工作的原因。