实际上,我有一些通常在运行时通过JVM参数设置的配置属性。
final props = [
"-Dproject.debug=true",
"-Dproject.legacy.function=true",
"-Dproject.secure.impl=true"
]
以上是一些例子。根据属性的不同,我测试的一些类的操作方式会有所不同,如果启用了project.legacy.function
,它将退回到遗留实现,而不是使用现代的实现。
test {
final props = [
"-Dproject.debug=true",
"-Dproject.legacy.function=true",
"-Dproject.secure.impl=true"
]
jvmArgs props
useJUnitPlatform()
testLogging.showStandardStreams = true
}
这是我在gradle中的测试任务。我希望能够以某种方式重新运行它,例如,使用一组不同的jvmArgs,将上面的函数设置为false。我无法在我的任务中找到这样做的方法。我在StackOverflow和其他地方找到的唯一东西演示了如何通过@Repeat
或在Test类本身中重新运行JUnit测试。但这对我不起作用,因为我的属性是通过一个最终化的类定义的,并且在内部使用。
class Properties {
public static final boolean DEBUG = get("project.debug");
public static final boolean LEGACY_FUNCTION = get("project.legacy.function");
}
在其他地方...
class SomeClass {
SomeType someMethod(SomeOtherType var1) {
if (Properties.LEGACY_FUNCTION) {
// do one thing
}
else {
// do other thing
}
}
}
是否有办法重新运行JUnit任务并使其具有不同的属性?
编辑:
为了清楚起见,我将尝试使用伪代码来演示我的意思。
test {
final props = [
"-Dproject.debug=true",
"-Dproject.legacy.function=true",
"-Dproject.secure.impl=true"
]
jvmArgs props
useJUnitPlatform()
testLogging.showStandardStreams = true
repeat {
final props2 = [
"-Dproject.debug=true",
"-Dproject.legacy.function=false",
"-Dproject.secure.impl=true"
]
jvmArgs props2
useJUnitPlatform()
testLogging.showStandardStreams = true
}
}
我不介意手动写出true/false
(我可能会使用迭代随机数发生器),我真正需要的是知道我是否可以通过gradle脚本以某种形式重新运行测试任务,这样我就只需要执行./gradlew test
并让它在我的所有迭代中运行。
1条答案
按热度按时间qltillow1#
您可以传入一个Gradle属性,该属性可用作开关,以确定
project.legacy.function
应为true
还是false
。例如:而以
./gradlew -PlegacyFunction
的身份执行会导致project.legacy.function
变成true
。省略属性会使它变成false。