设置Gradle测试的系统属性

设置Gradle测试的系统属性,gradle,Gradle,我有一个应用程序,在这个应用程序中,每个测试都应该在一个VM中运行,该VM的配置由一个特定于测试的系统属性进行调节,该属性只能基于测试类名 类似这样的作品: 但这不太管用。分叉JVM看到的名称确实发生了变化,但它们不是我期望的名称,我怀疑它们甚至不是确定性的。似乎有一个共享的JavaForkOptions项,对beforeSuite的调用并没有以确定性和独占性的方式链接到该套件的进程分支,因此进程获得的名称可能与其beforeSuite调用中的名称集不匹配 是否有更好的方法来实现这一点,或者有更

我有一个应用程序,在这个应用程序中,每个测试都应该在一个VM中运行,该VM的配置由一个特定于测试的系统属性进行调节,该属性只能基于测试类名

类似这样的作品:

但这不太管用。分叉JVM看到的名称确实发生了变化,但它们不是我期望的名称,我怀疑它们甚至不是确定性的。似乎有一个共享的JavaForkOptions项,对beforeSuite的调用并没有以确定性和独占性的方式链接到该套件的进程分支,因此进程获得的名称可能与其beforeSuite调用中的名称集不匹配

是否有更好的方法来实现这一点,或者有更精确地控制分叉过程的方法,以便可以在特定于分叉的数据结构上设置系统属性


谢谢你的帮助

将beforeTest替换为beforeTest是否解决了问题?@Opal否,唉。JVM根本看不到更新的系统属性。我猜这个钩子是在测试JVM被分叉之后调用的。
test {
  forkEvery 1
  maxParallelForks Runtime.runtime.availableProcessors()

  beforeSuite { TestDescriptor descriptor ->
     systemProperty( 'test.class.name', descriptor.getClassName() )
  }
}