2017-02-25 50 views
0

我运行下面的JUnit测试在我的摇篮插件:的Groovy和JUnit

import org.junit.* 
import org.gradle.testfixtures.ProjectBuilder 
import org.gradle.api.Project 

public class UmpleIntegrationTests { 
    private static Project testProject 

    @Before 
    public void setUp() { 
     testProject = ProjectBuilder.builder().build() 
     testProject.plugins.apply 'umple.gradle.plugin' 
    } 

    @Test 
    public void umpleApplyPluginToProject() {  
     assertTrue(testProject.getPlugins().hasPlugin('umple.gradle.plugin')) 
    } 

    @Test 
    public void umplePluginAddsTaskToProject() { 
     assertTrue(testProject.tasks.getByName('generateSource') != null) 
    } 
} 

不过,我发现了以下错误它本质上两者的其他测试相同):

UmpleIntegrationTests > umplePluginAddsTaskToProject FAILED 
    groovy.lang.MissingMethodException: No signature of method: UmpleIntegrationTests.assertTrue() is applicable for argument types: (java.lang.Boolean) values: [true] 
     at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58) 
     at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:81) 
     at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:52) 
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:154) 
     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166) 
     at UmpleIntegrationTests.umplePluginAddsTaskToProject(UmplePluginIntegrationTests.groovy:21) 

为什么assert方法不知道true是一个布尔值?此外,如果我在每种测试方法中声明并初始化一个新的testProject,此代码将起作用。不知道它为什么这样工作,但不是这样。

回答

1

这里的问题不是参数类型。 您必须添加静态导入,如 import static org.junit.Assert.assertTrue 才能访问静态的assertTrue方法。您也可以致电Assert.assertTrue(...)