从Eclipse中的依赖jar运行JUnit测试

mik*_*era 9 java eclipse junit unit-testing maven

我有一些JUnit测试包含在一个.jar旨在用作库的.该库包含一些测试,只要在另一个项目中使用该库,就应该运行这些测试.

但是,当我使用库创建一个新项目并在Eclipse中运行JUnit时,依赖项中的测试.jar不会被JUnit测试运行器检测到/不会被检测到.我收到消息:

No tests found with test runner 'JUnit 4'.
Run Code Online (Sandbox Code Playgroud)

有没有办法可以配置依赖项,.jar以便测试将与主项目中可能包含的任何测试一起运行?

基本上我希望依赖项.jar将测试"导出"到它所使用的任何项目中.

我正在使用Eclipse Juno,JUnit 4.10和Maven进行依赖管理.

编辑:

这个库的重点是能够帮助测试使用它的项目 - 即它运行一些专门的测试.这就是为什么我希望能够导入库.jar并让它为导入项目提供额外的测试.

Bip*_*tra 5

你可以试试Maven Surefire

在某些情况下,拥有一组使用各种依赖项配置运行的测试会很有用。实现此目的的一种方法是拥有一个包含单元测试并生成测试 jar 的单个项目。然后,几个测试配置项目可以使用单元测试并使用不同的依赖项集运行它们。问题是没有简单的方法可以在依赖 jar 中运行测试。在神火插件应该有一个配置,让我可以运行所有或一组单元测试包含在依赖罐子。

这可以按如下方式完成(Junit 3):

确保测试 jar 包含一个具有静态套件()方法的类

import junit.framework.Test;
import junit.framework.TestSuite;

public class AllTests {    
    public static Test suite() 
    { 
        TestSuite suite = new TestSuite( "All Tests"); 
        suite.addTestSuite(TestOne.class); 
        suite.addTestSuite(TestTwo.class); 
        return suite; 
    }    
}
Run Code Online (Sandbox Code Playgroud)

然后在项目中使用 test-jar 依赖项:创建一个TestCase

package org.melati.example.contacts;
import org.melati.poem.AllExportedTests;
import junit.framework.Test;
import junit.framework.TestCase;

public class PoemTest extends TestCase {    
    public static Test suite() 
    { 
        return AllExportedTests.suite(); 
    }
}
Run Code Online (Sandbox Code Playgroud)

现在将找到测试。


yeg*_*256 2

我认为制作单元测试库(@Test带注释的方法)是一个坏主意。然而,创建一个可重用测试组件库是一个不错的选择。我们已经在一些开源项目中做到了这一点,您可以看看它是如何工作的。

  1. 一个 Maven 模块从目录导出测试组件(我们称之为“模拟”)src/mock/java。导出的工件具有-mock分类器。请参阅rexsl/pom.xml(注意突出显示的行)。

  2. 模拟工件与常用工件一起部署到 Maven Central:http://repo1.maven.org/maven2/com/rexsl/rexsl-core/0.3.8/(注意...-mock.jar文件)

  3. 需要模拟的模块可以像平常一样包含它们,例如rexsl-core/pom.xml(请参阅突出显示的行):

  4. 然后,在单元测试中只需使用模拟库中的类,就像模拟的常规构建器一样,例如:BulkHttpFeederTest

这就是如何以优雅的方式使测试工件可重用。希望能帮助到你。