首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用另一个类中指定的jqwik @Provider作为@ForAll参数的一部分?

如何使用另一个类中指定的jqwik @Provider作为@ForAll参数的一部分?
EN

Stack Overflow用户
提问于 2021-11-29 20:34:10
回答 1查看 86关注 0票数 0

我们在一个类中指定了一组生成器。

代码语言:javascript
复制
class MyUsefulGenerators {

    @Provide 
    public Arbitrary<String> someDomainSpecificThing() {
        ...
    }
}

它们非常有用,所以我希望能够在指定它们的地方以外的不同的测试类中使用它们。例如:

代码语言:javascript
复制
class MyTestClass {

    @Property
    void testThing(@ForAll("someDomainSpecificThing") String thing) {
        ...
    }
}

但是,jqwik无法发现这个提供程序,因为它位于当前类之外。当然,我可以从另一个类手动导入提供程序,并在这个类中设置一个新的提供程序,但这一切都让人觉得有点不好受。

是否有一种直接使用另一个文件中指定的提供程序的方法?

EN

回答 1

Stack Overflow用户

发布于 2021-12-17 14:01:57

jqwik的提供者共享机制称为“域”。关于它,在jqwik的用户指南中有整整一章。

在您的示例中,您可以引入这样的域上下文类:

代码语言:javascript
复制
class MyDomainContext extends AbstractContextBase {
    @Provide 
    public Arbitrary<String> someDomainSpecificThing() {
        /// return whatever
    }
}

然后在属性中使用上下文:

代码语言:javascript
复制
class MyTestClass {

    @Property
    @Domain(MyDomainContext.class)
    void testThing(@ForAll String thing) {
        ...
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70160993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档