2012-11-26 4 views
2

이제 애플리케이션을 테스트하기 위해 별도의 테스트 프로젝트에서 안드로이드 테스트를 코딩합니다. 나는 많은 테스트 케이스와 클래스를 코딩했다. 지금, 나는 시험 검사를 쓰고 싶다. 모든 테스트를 실행합니다. 그러나 예외가 있습니다.왜 안드로이드 테스트 프로젝트에서 모든 테스트를 실행할 수 있습니까?

junit.framework.AssertionFailedError : android.test에 com.netqin.myproject.test.alltest.AllTest 에서 찾을 수 없습니다 테스트

public static Test suit() { 
     return new TestSuiteBuilder(AllTest.class) 
        .includeAllPackagesUnderHere() 
        .build(); 
    } 

예외가 후속은 다음과 같습니다 코드는 다음과입니다. android.test.InstrumentationTestRunner.onStart (InstrumentationTestRunner.java:555) 에서 android.test.AndroidTestRunner.runTest (AndroidTestRunner.java:175) 에서 AndroidTestRunner.runTest (AndroidTestRunner.java:190) 에서 android.app.Instrumentation $ InstrumentationThread.run (Instrumentation.java:1584)

무엇이 잘못 되었나요, 이유를 찾을 수 없습니다. 어떤 도움도 감사합니다.

답변

0

includeAllPackagesUnderHere() 메소드는 테스트 스위트가 저장되는 패키지 또는 서브 패키지 (link)에서 테스트를 가져올 수 있어야합니다.

따라서 동일한 패키지에 테스트 메소드가 실제로 포함 된 별도의 JUnit 테스트 케이스를 만들어야합니다. 예를 들어, 두 개의 파일이있을 수 있습니다

1) MyTestSuite.java을

package com.example.app.tests; 

import junit.framework.Test; 
import junit.framework.TestSuite; 
import android.test.suitebuilder.TestSuiteBuilder; 

public class MyTestSuite extends TestSuite { 

    /** 
    * A test suite containing all tests 
    */ 
    public static Test suit() { 
     return new TestSuiteBuilder(MyTestSuite.class) 
        .includeAllPackagesUnderHere() 
        .build(); 
    } 

} 

참고 : 확인 TestSuiteBuilder 내에서 클래스가,이 경우 MyTestSuite.class에,에, 포함하는 클래스의 이름과 일치하는지 확인 이 경우에는 MyTestSuite입니다.

2)이 경우

package com.example.app.tests; 

import android.test.ActivityInstrumentationTestCase2; 

public class MyTestMethods extends ActivityInstrumentationTestCase2<TheActivityThatYouAreTesting> { 

    public MyTestMethods() { 
     super("com.example.app",TheActivityThatYouAreTesting.class); 
    } 

    protected void setUp() throws Exception { 
     super.setUp(); 
    } 

    protected void tearDown() throws Exception { 
     super.tearDown(); 
    } 

    public void testFirstTest(){ 
     test code here 
    } 

    public void testSecondTest(){ 
     test code here 
    } 
} 

을 MyTestMethods.java, testFirstTest()와 testSecondTest()는 테스트 스위트 (MyTestSuite.class)에 포함된다. Android JUnit 테스트로 MyTestSuite.java를 실행하면 두 테스트가 모두 실행됩니다.

+2

여기에 오타가있을 수 있습니다. MyTestSuite는 "public static Test suit() {"(suite vs suit) 대신 "public static Test suite() {"이어야합니다. –

관련 문제