2012-06-15 94 views
1

我在grails 2.0.3中创建了一个服务的单元测试,我想在eclipse中用junit runner运行这个测试。当我右击测试类=>调试为=> JUnit测试我在控制台收到以下错误信息:如何在grails 2.0.3中测试服务?

Class not found myProject.ReportServiceTests 
java.lang.ClassNotFoundException: myProject.ReportServiceTests 
at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 

我ReportServiceTest.groovy测试/单位/ myProject的:

package myProject 

import grails.test.mixin.* 
import grails.test.mixin.support.* 
import org.junit.* 

/** 
* See the API for {@link grails.test.mixin.support.GrailsUnitTestMixin} for usage  instructions 
*/ 

@TestFor(myProject.ReportService) 
@Mock(Sale) 
class ReportServiceTests { 

void setUp() { 
    // Setup logic here 
} 

void tearDown() { 
    // Tear down logic here 
} 

void testSomething() { 
    fail "Implement me" 
} 

void testGetSalesCompleted() { 
    def salesCompleted = service.getSalesCompleted() 
    if(salesCompleted.count > 0) { 
     assertTrue() 
    } 
    fail "no sales completed" 
} 
} 

错误在哪里?预生成的ControllerTests.groovy在eclipse中与junit亚军工作正常! 我使用STS: SpringSource工具套件

版本:2.9.2.RELEASE 版本ID:201205071000

+0

右键单击测试类>运行方式> grails命令test-app works? –

+0

是的,这是行不通的! Grails启动2次测试并失败(正常):没有方法签名:myProject.ReportService.getSalesCompleted()适用于参数类型:()values:[] 可能的解决方案:getSalesCompleted(myProject.User,java.util.Date, java.util.Date) \t at myProject.ReportServiceTests.testGetSalesCompleted(ReportServiceTests.groovy:27) |完成了2个单元测试,其中2个在4702ms失败 – whitenexx

+1

嗯,我假设test-app命令设置了类路径,并且你尝试的方式没有。 –

回答

3

小费,使Grails的单元测试与Eclipse的JUnit运行工作:只需添加@Test标注其中一项测试;

=>跑步者足以确定该类有一套测试,而@TestFor魔术将完成剩下的工作:动态地,所有方法“变成”eclipse junit跑步者的测试。