1

我正在开发 Jenkins 插件并同时评估单元测试软件,并获得了学习机会。该软件为此方法编写了一个测试用例-

    public boolean isApplicable(Class<? extends AbstractProject> aClass) {
        // indicates that this builder can be used with all 
        // kinds of project types
        return true;
    }

看起来很简单。虽然测试用例没有编译,但我无法从我对使用通配符的有限知识中弄清楚如何修复它。我目前的尝试-

    AbstractProject ap = new FreeStyleProject(null, null);;
    Assert.assertTrue(testedObject.isApplicable(ap));

(FreeStyleProject 扩展了 AbstractProject)

这给出了错误消息

FitnesseBuilder.DescriptorImpl 类型中的方法 isApplicable(Class) 不适用于参数(AbstractProject)

我尝试了多种类型来传递给该参数,但似乎无法让它接受任何东西。有人想给我一个快速的教训吗?

4

2 回答 2

4

尝试Assert.assertTrue(testedObject.isApplicable(FreeStyleProject.class));使用 Class 的实例而不是 AbstractProject

于 2013-10-30T17:37:52.447 回答
4

您需要传递Class<T>对象,而不是该类的实例:

// AbstractProject ap = new FreeStyleProject(null, null);
Assert.assertTrue(testedObject.isApplicable(FreeStyleProject.class));

当然,FreeStyleProject类需要扩展AbstractProject(因为您当前代码的第一行已编译,它已经这样做了)。

于 2013-10-30T17:38:21.357 回答