2011-11-02 67 views
1

我想爲junit定製亞軍。我使用這裏給出的擴展亞軍:junit定製亞軍實施

http://codehowtos.blogspot.com/2011/04/run-junit-test-repeatedly.html

加入我自己創建的過濾器亞軍的代碼,它擴展了亞軍,到ExtendedRunner這是我從上面的鏈接了。當我嘗試運行測試時,它給了我下面的錯誤。

java.lang.Exception: No runnable methods 
    at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:157) 
    at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:102) 
    at org.junit.runners.ParentRunner.validate(ParentRunner.java:336) 
    at org.junit.runners.ParentRunner.<init>(ParentRunner.java:74) 
    at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:56) 
    at com.util.ExtendedRunner.<init>(ExtendedRunner.java:35) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31) 
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) 
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) 
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:32) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:41) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:31) 
    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) 

任何幫助解決相同?? ??

+0

粘貼代碼請 – ssedano

+0

您使用的是不同的ClassLoaders?如果你是,那麼在設置TestRunner時加載的'@ Test.class'可能不等於查找註釋方法時檢測到的那個。 –

回答

1

據我所知,你的ExtendedRunner延伸BlockJUnit4ClassRunner延伸ParentRunner。在查看最後一個類的代碼時,構造函數中唯一要做的就是「註冊」您傳遞給此運行器的類及其信息。

所以最有可能的是,該類沒有任何標記爲測試的方法。如果您使用的是JUnit 4,請不要在所有測試方法之前忘記@Test註釋。