2015-01-26 3 views
0

Я хочу скомпилировать и запустить тесты JUnit (4.12) во время выполнения проекта grails (2.4.4).Компиляция тестов JUnit во время выполнения: «Нет методов runnable»

Следующая строка является примером для такого теста (имя класса: «DasS»).

import org.junit.runner.JUnitCore; 
import static org.junit.Assert.*; 
import org.junit.Before;import org.junit.Test; 
import org.junit.After; 

public class DasS { 

    public DasS(){} 

    @Before 
    public void setUp() {} 

    @After 
    public void tearDown(){} 

    @Test 
    public void test0() { 
    assertEquals(new Integer(1),new Integer(1)); 
    } 

    @Test 
    public void test1() { 
    assertEquals(new Double(1),new Double(1)); 
    } 
} 

Целью следующего метода является загрузка в классы и запуск скомпилированных тестов.

public void run() { 

    URLClassLoader loader = (URLClassLoader) getClass().getClassLoader(); 
    DynamicClassLoader dynamicLoader = new DynamicClassLoader(loader); 


    try { 
     dynamicLoader.addURL(new File(Configure.TMP_FOLDER).toURI().toURL()); 
    } catch (MalformedURLException e1) { 
     //Add good exception handling here 
    } 

    try { 
     dynamicLoader.loadClass("DasS"); 
    } catch (ClassNotFoundException e2) { 
     // TODO Auto-generated catch block 
     e2.printStackTrace(); 
    } 
    Class testClass2 = null; 
    try { 
     testClass2 = Class.forName("DasS", true, dynamicLoader); 
    } catch (ClassNotFoundException e2) { 
     // TODO Auto-generated catch block 
     e2.printStackTrace(); 
    } 
    Result result2 = JUnitCore.runClasses(testClass2); 
    for(Failure f : result2.getFailures()) { 
     System.out.println(f.getMessage()); 
    } 

} 

Там нет никаких ошибок во время компиляции, ни во время загрузки классов, но каждый раз, когда я запускаю этот код я не получаю «Нет готовые к выполнению методов» как сообщение об ошибке, хотя, очевидно, есть некоторый тест-метода.

StackTrace через f.getTrace():

java.lang.Exception: No runnable methods 
at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:191) 
at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:128) 
at org.junit.runners.ParentRunner.validate(ParentRunner.java:416) 
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:84) 
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:65) 
at org.junit.internal.builders.JUnit4Builder.runnerForClass(JUnit4Builder.java:10) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) 
at org.junit.runner.Computer.getRunner(Computer.java:40) 
at org.junit.runner.Computer$1.runnerForClass(Computer.java:31) 
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) 
at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:101) 
at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:87) 
at org.junit.runners.Suite.<init>(Suite.java:81) 
at org.junit.runner.Computer.getSuite(Computer.java:28) 
at org.junit.runner.Request.classes(Request.java:75) 
at org.junit.runner.JUnitCore.run(JUnitCore.java:105) 
at org.junit.runner.JUnitCore.runClasses(JUnitCore.java:62) 
at org.junit.runner.JUnitCore.runClasses(JUnitCore.java:49) 
at codeEvaluation.RuntimeAnalysis$$EP2Zc8Kk.run(RuntimeAnalysis.java:117) 
at codeEvaluation.RuntimeAnalysis$$DP2Zc8Kk.run(Unknown Source) 
at codeEvaluation.RuntimeAnalysis.run(RuntimeAnalysis.java) 
at codeEvaluation.CodeEvaluation.runtimeEval(CodeEvaluation.java:258) 
at codeEvaluation.CodeEvaluation.eval(CodeEvaluation.java:97) 
at codeEvaluation.CodeEvaluation$eval.call(Unknown Source) 
at tastypi.ExerciseController.run(ExerciseController.groovy:70) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:483) 
at org.springsource.loaded.ri.OriginalClassInvoker.invoke(OriginalClassInvoker.java:47) 
at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1299) 
at org.codehaus.groovy.grails.web.servlet.mvc.MixedGrailsControllerHelper.invoke(MixedGrailsControllerHelper.java:154) 
at org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerHelper.handleAction(AbstractGrailsControllerHelper.java:375) 
at org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerHelper.executeAction(AbstractGrailsControllerHelper.java:252) 
at org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerHelper.handleURI(AbstractGrailsControllerHelper.java:205) 
at org.codehaus.groovy.grails.web.servlet.mvc.AbstractGrailsControllerHelper.handleURI(AbstractGrailsControllerHelper.java:126) 
at org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsController.handleRequest(SimpleGrailsController.java:72) 
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:50) 
at org.codehaus.groovy.grails.web.servlet.GrailsDispatcherServlet.doDispatch(GrailsDispatcherServlet.java:347) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) 
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:646) 
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(PageFragmentCachingFilter.java:198) 
at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter.java:63) 
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) 
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748) 
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486) 
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411) 
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338) 
at org.codehaus.groovy.grails.web.mapping.UrlMappingUtils.forwardRequestForUrlMappingInfo(UrlMappingUtils.java:178) 
at org.codehaus.groovy.grails.web.mapping.UrlMappingUtils.forwardRequestForUrlMappingInfo(UrlMappingUtils.java:144) 
at org.codehaus.groovy.grails.web.mapping.UrlMappingUtils.forwardRequestForUrlMappingInfo(UrlMappingUtils.java:135) 
at org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:216) 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69) 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67) 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) 
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
at java.lang.Thread.run(Thread.java:745) 
+0

Не могли бы вы Пасту трассировки стека от ошибок? – Grzesuav

+0

Извините, я забыл. Я его редактировал. – tastyPI

ответ

0

Если я просто скопировать и вставить свой тестовый класс (Дас) в новый класс в Android Studio (путь должен быть правильным), то 2 испытания запуска успешно для меня. Тест бегун выбирается на интерфейсе является:

android.support.test.runner.AndroidJUnitRunner 

мне не нужен вам помощник метод (общественного недействительными запуска())

Зависимости в вашем проекте могут быть разными. Вам может понадобиться подмножество шахты:

dependencies { 
    compile 'com.android.support:support-annotations:22.2.0' 
    androidTestCompile 'com.google.dexmaker:dexmaker:1.2' 
    androidTestCompile 'com.android.support.test:runner:0.4.1' 
    androidTestCompile 'com.android.support.test:rules:0.3' 
    androidTestCompile 'junit:junit:4.12' 
} 

Но вы, возможно, потребуется установить правильный тест бегун (все еще в build.gradle):

defaultConfig { 
    minSdkVersion 19 
    targetSdkVersion 22 
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
}