小编Ern*_*aan的帖子

如何在Maven/Surefire unittest运行"mvn test"期间使清单可用?

如何在Maven/Surefire unittest运行"mvn test"期间使清单可用?

我有一个开源项目,我正在从Ant转换为Maven,包括它的单元测试.这是Maven项目的项目源存储库:http: //github.com/znerd/logdoc

我的问题涉及主要模块,称为"基础".该模块有一个单元测试,用于测试getVersion()类中静态方法的行为org.znerd.logdoc.Library.此方法返回:

Library.class.getPackage().getImplementationVersion()
Run Code Online (Sandbox Code Playgroud)

getImplementationVersion()方法返回清单文件中的设置值.到现在为止还挺好.我在过去测试了这个并且它运行良好,只要清单确实可以在路径的类路径上META-INF/MANIFEST.MF(在文件系统上或在JAR文件内).

现在我的挑战是当我运行单元测试时清单文件不可用:

mvn test
Run Code Online (Sandbox Code Playgroud)

Surefire运行单元测试,但我的单元测试失败,并显示Library.getVersion()返回的消息null.

当我想检查JAR时,我发现它甚至还没有生成.将资源添加到类路径之前,Maven/Surefire会对类运行单元测试.

进一步调查显示Surefire在临时目录中生成自己的JAR文件,例如

/private/var/folders/TR/TREvj1wIHYyAcUy-xmc3UU+++TI/-Tmp-/surefirebooter7448562488934426857.jar
Run Code Online (Sandbox Code Playgroud)

然后使用此JAR加载Library类.这个JAR不包含我所困的资源src/main/resources.所以放一个META-INF/MANIFEST.MF文件也行不通.

那么我如何告诉Surefire让我的META-INF/MANIFEST.MF文件可以从与类相同的类加载器中获得Library.

请注意,我在Mac OS X 10.6.2上使用Maven 2.2.0,Java 1.6.0_17,使用JUnit 4.8.1.

maven-2 manifest.mf junit4 surefire

9
推荐指数
1
解决办法
2486
查看次数

从 Jenkins 管道运行 Docker 容器并捕获输出

在 Jenkinsfile 中,如何运行 Docker 容器并捕获输出,而不恢复为sh指令?

这就是我在该阶段构建容器映像的方式Build

dockerImage = docker.build(env.DOCKER_COORDS, "--build-arg BUILD_VERSION=${env.BUILD_VERSION} .")
Run Code Online (Sandbox Code Playgroud)

这就是我在后期推送图像的方式Publish

withDockerRegistry(credentialsId: env.DOCKER_REG_CREDS_ID) {
    dockerImage.push('latest')
}
Run Code Online (Sandbox Code Playgroud)

Build在和阶段之间Publish,在一个Test阶段中,我想验证容器的输出在传递参数时--version是否等于${env.BUILD_VERSION}

如何运行容器并捕获输出,而无需sh "docker ..."再次使用指令?

jenkins docker jenkins-pipeline

5
推荐指数
1
解决办法
9262
查看次数