相关疑难解决方法(0)

如何将测试类包含到Maven jar中并执行它们?

在Maven项目中,我在同一个包中有测试类和源类,但是在不同的物理位置.

.../src/main/java/package/** <-- application code
.../src/test/java/package/** <-- test code
Run Code Online (Sandbox Code Playgroud)

访问测试类中的源类没有问题,但是我想在main方法中运行一个测试运行器并访问它,AllTest.class以便我可以创建jar并执行我的测试.

 public static void main(String[] args) {
    // AllTest not found
    Result result = JUnitCore.runClasses(AllTest.class);
    for (Failure failure : result.getFailures()) {
        System.out.println(failure.toString());
    }
    System.out.println(result.wasSuccessful());
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为我无法访问测试代码.我不明白,因为他们在同一个包中.

问题:如何从应用程序类访问测试类?或者,Maven如何打包包含测试类和执行测试的胖罐?

java unit-testing maven-3 maven maven-jar-plugin

27
推荐指数
1
解决办法
3万
查看次数

如何配置maven shade插件以在我的jar中包含测试代码?

我使用shade maven插件来构建我的项目,以便它的所有依赖项都包含在一个jar中(这使得在Hadoop上运行它更容易).默认情况下,Shade似乎排除了我的测试代码,这是可以理解的.由于我想对我的集群运行集成测试,我希望设置另一个配置文件来为此目的构建一个单独的jar.有没有办法配置这个插件还包括测试代码?

java hadoop maven maven-shade-plugin

13
推荐指数
4
解决办法
1万
查看次数

从可执行jar运行spring测试

我有一些Spring测试可以启动应用程序上下文并测试一些服务.我可以使用Maven和IDE运行这些测试.现在我需要在无法访问Maven的其他机器上运行这些测试.我的想法是创建一个测试jar并通过命令行运行它们.

所以我创建了一个自定义Runner来调用我需要的测试类,这些测试将启动Spring Application上下文并测试一些服务.

以下是示例代码:

我的自定义亚军:

public class Main {

    public static void main(String[] args) {
        System.out.println("Running tests!");
        JUnitCore engine = new JUnitCore();
        engine.addListener(new TextListener(System.out));
        engine.run(SpringSampleTest.class);
    }
} 
Run Code Online (Sandbox Code Playgroud)

上面的跑步者正在调用此测试

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {AppConfig.class})
public class SpringSampleTest {
    @Autowired
    TestService testService;

    @Test
    public void testSimple() {
        assertTrue("Test Simple", testService.isValid());
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的配置和服务

@Configuration
@ComponentScan(basePackages = {"mypackage"})
public class AppConfig {

}

@Service
public class TestService {

    public boolean isValid() {
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,若要从罐子这些测试中,我用汇编插件来创建一个可执行的JAR,其中包括我的所有测试和依赖关系(感谢这个答案在这里).现在,当我运行这个可执行的JAR,我定制的运行(Main.java)能够触发测试,但它不加载Spring上下文,并与一个空指针异常失败,因为我的依赖不会被自动装配.这是日志:

Running tests!
Sep 05, 2018 …
Run Code Online (Sandbox Code Playgroud)

java spring maven

6
推荐指数
1
解决办法
2557
查看次数