有没有一种方法可以在运行时访问JUnit5版本?
例如。
...
System.out.printf( "JUnit: %s\n", junit.runner.Version.id() );
...
在JUnit4中工作得很好。
我正在寻找JUnit5的“对应物”
谢谢:-)
谢谢你的回答,但我还是有问题。例如。我无法访问“.getVersion()”
无论如何
...
import java.lang.module.ModuleDescriptor;
import java.lang.module.ModuleDescriptor.Version;
import java.util.Optional;
import org.junit.jupiter.api.Test;
import org.junit.platform.runner.JUnitPlatform;
...
String getJupiterVersionFromModuleDescriptor(){
final Class<Test> clazz = org.junit.jupiter.api.Test.class;
final Module module = clazz.getModule();
final ModuleDescriptor moduleDescriptor = module.getDescriptor();
final Optional<Version> optionalVersion = moduleDescriptor.version();
final Version version = optionalVersion.get();
return version.toString();
}
String String getPlatformVersionFromModuleDescriptor(){
final Class<JUnitPlatform> clazz = org.junit.platform.runner.JUnitPlatform.class;
final Module module = clazz.getModule();
final ModuleDescriptor moduleDescriptor = module.getDescriptor();
final Optional<Version> optionalVersion = moduleDescriptor.version();
final Version version = optionalVersion.get();
return version.toString();
}
String getJupiterVersionFromManifest(){
final Class<Test> clazz = org.junit.jupiter.api.Test.class;
final Package pakage = clazz.getPackage();
final String version = pakage.getImplementationVersion();
return version;
}
String getPlatformVersionFromManifest(){
final Class<JUnitPlatform> clazz = org.junit.platform.runner.JUnitPlatform.class;
final Package pakage = clazz.getPackage();
final String version = pakage.getImplementationVersion();
return version;
}// delivers null in my case - getPlatformVersionFromModuleDescriptor() reports 1.5.1 on my machine
当然还有:
org.junit.jupiter.api.Test.class.getModule().getDescriptor().version()
org.junit.platform.runner.JUnitPlatform.class.getModule().getDescriptor().version()
org.junit.jupiter.api.Test.class.getPackage().getImplementationVersion()
org.junit.platform.runner.JUnitPlatform.class.getPackage().getImplementationVersion()
也管用。
当前我正在使用:
String getJupiterVersion(){
final Class<Test> testClass = org.junit.jupiter.api.Test.class;
final Optional<Version> optionalVersion = testClass.getModule().getDescriptor().version();
return optionalVersion.isPresent() ? optionalVersion.get().toString() : testClass.getPackage().getImplementationVersion();
}
String getPlatformVersion(){
final Class<JUnitPlatform> jUnitPlatformClass = org.junit.platform.runner.JUnitPlatform.class;
final Optional<Version> optionalVersion = jUnitPlatformClass.getModule().getDescriptor().version();
return optionalVersion.isPresent() ? optionalVersion.get().toString() : jUnitPlatformClass.getPackage().getImplementationVersion();
}
此外:在运行时获得jar版本可能会有帮助。
无论如何,我仍然有问题访问复古版本。例如。org.junit.vintage.engine.vintageTestEngine不可访问???
最近在一些运行JUnit 5.4getDescriptor()的机器上。例如org.junit.jupiter.api.test.class.GetModule().GetDescriptor()传递了空值。我希望有一种方法来识别在任何JUnit5安装上运行的JUnit版本。
没有单一的“JUnit5”版本号。
他们有三个人。它们列在junit.org上:
这三个组的所有工件都包含打包的版本信息
a)进入其模块描述符,并且
b)放入清单文件。
以木星为例,你可以使用
a)org.junit.jupiter.api.test.class.GetModule().GetDescriptor().GetVersion()
或b)org.junit.jupiter.api.test.class.GetPackage().GetImplementationVersion()
在运行时访问Jupiter的版本信息。
我有个测试: 当我删除子句并添加一个包含的依赖项(作为库)时,它可以工作: 当我添加它们时(中的Maven依赖项和),IDEA中的编译失败,出现以下消息: 但是Maven build仍然成功! 测试项目可在https://github.com/rpuch/test-resource-jdk9获得
问题内容: 我有一个测试: 它尝试访问。在Java 8中,它起作用了,但是在Java 9中(我在使用Oracle JDK 9),它失败了。从JDK是默认不可用在Java中9。 我正在尝试使用模块描述符访问它: 在这里,我专门请求访问模块(包含)。但是测试仍然失败。 当我删除该子句并添加包含的依赖项(作为库)时,它会起作用: 当我(在Maven的依赖性增加他们两个和),汇编IDEA失败,出现以下消息
我正在用docker-compose测试我的应用程序,其中包含DynamoDB作为内部容器。docker-compose文件如下: 在构建代码时,我得到以下错误:
当我运行junit测试时,控制台打印此异常: 基本测试对象如下 而 JUnit 方法就像这样: 我的项目是JavaEE项目,使用maven管理lib,使用spring-manage-beans。 我的开发环境是: Mac OS X Yosetime 10.10.4 EclipseJavaEE IDE for Web Developers(版本:Mars Release(4.5.0)) Maven插
问题内容: 我需要解决JDK 1.5中的Java错误,该错误已在1.6中修复。我正在使用以下条件: 这对其他JVM有用吗?有更好的方法来检查吗? 问题答案: 是每个JVM中都存在的系统属性。有两种可能的格式: Java的8或降低:1.6.0_23,1.7.0,1.7.0_80,1.8.0_211 Java的9或更高:9.0.1,11.0.4,12,12.0.1 这是提取主要版本的技巧:如果它是版本
问题内容: 我想知道是否有可能在运行时检索该类来自的jar的版本号? 我知道可以找到该类来自的jar: 但是版本呢? (假设其不在文件名中:) 问题答案: