почему я не могу запустить все тесты в тестовом проекте Android?

теперь я кодирую тестирование Android в отдельном тестовом проекте для тестирования приложения. я закодировал много тестовых случаев и классов. теперь я хочу написать тестовый набор. для запуска всего теста. Но у него есть исключение. код следующий:

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

исключение составляет следующее:

junit.framework.AssertionFailedError: тесты не найдены в com.netqin.myproject.test.alltest.AllTest на android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) на android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) ) в android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) в android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584)

что не так, не могу понять причину. любая помощь благодарна.


person perry    schedule 26.11.2012    source источник


Ответы (1)


Метод includeAllPackagesUnderHere() должен иметь возможность извлекать тесты либо из пакета, в котором сохранен ваш набор тестов, либо из любых подпакетов (ссылка).

Итак, вам нужно создать отдельный тестовый пример 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) MyTestMethods.java

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
    }
}

В этом случае testFirstTest() и testSecondTest() будут включены в ваш набор тестов (MyTestSuite.class). Запуск MyTestSuite.java в качестве теста Android JUnit теперь будет запускать оба этих теста.

person Justin Pollard    schedule 22.02.2013
comment
Здесь возможна опечатка. MyTestSuite должен быть общедоступным статическим набором тестов () { вместо общедоступного статического набора тестов () { (набор против костюма). - person Mika Vatanen; 27.10.2014