我们在一个类中指定了一组生成器。
class MyUsefulGenerators {
@Provide
public Arbitrary<String> someDomainSpecificThing() {
...
}
}它们非常有用,所以我希望能够在指定它们的地方以外的不同的测试类中使用它们。例如:
class MyTestClass {
@Property
void testThing(@ForAll("someDomainSpecificThing") String thing) {
...
}
}但是,jqwik无法发现这个提供程序,因为它位于当前类之外。当然,我可以从另一个类手动导入提供程序,并在这个类中设置一个新的提供程序,但这一切都让人觉得有点不好受。
是否有一种直接使用另一个文件中指定的提供程序的方法?
发布于 2021-12-17 14:01:57
jqwik的提供者共享机制称为“域”。关于它,在jqwik的用户指南中有整整一章。
在您的示例中,您可以引入这样的域上下文类:
class MyDomainContext extends AbstractContextBase {
@Provide
public Arbitrary<String> someDomainSpecificThing() {
/// return whatever
}
}然后在属性中使用上下文:
class MyTestClass {
@Property
@Domain(MyDomainContext.class)
void testThing(@ForAll String thing) {
...
}
}https://stackoverflow.com/questions/70160993
复制相似问题