Запускайте классы Suite, используя другой класс Suite

Я хотел бы запустить некоторые классы Suite с JUnit 4, используя другой класс Suite. У меня есть следующий набор тестов для одного пакета:

package com.manuel.package1;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

@RunWith(Suite.class)
@SuiteClasses({ TestCase1.class, TestCase2.class,
    TestCase3.class, TestCase4.class })
public class AllTests1 {

}

Затем я хотел бы запустить весь набор тестов, который у меня есть, используя что-то похожее на:

package com.manuel;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
import com.manuel.package1;
import com.manuel.package2;

@RunWith(Suite.class)
@SuiteClasses({AllTests1.class, AllTests2.class})
public class RunAllTests {

}

Я бы предпочел использовать аннотации (@RunWith(Suite.class),@SuiteClasses({})) чем любой другой способ, если это возможно.

Сейчас я использую этот подход:

package com.manuel.package1;

import junit.framework.Test;
import junit.framework.TestSuite;

public class AllTests extends TestSuite {

    public static Test suite() {
        TestSuite suite = new TestSuite("Test for com.manuel.package1");
        suite.addTestSuite(TestCase1.class);
        suite.addTestSuite(TestCase2.class);
        suite.addTestSuite(TestCase3.class);
        suite.addTestSuite(TestCase4.class);
        return suite;
    }
}

И для запуска тестовых наборов:

package com.manuel;

import junit.framework.Test;
import junit.framework.TestSuite;

public class AllTests {

    public static Test suite() {

        TestSuite suite = new TestSuite("Run all the tests");
        suite.addTest(com.manuel.package1.AllTests.suite());
        suite.addTest(com.manuel.package2.AllTests.suite());
        return suite;
    }

}

Заранее спасибо.


person Manuelarte    schedule 06.11.2013    source источник


Ответы (1)


Я ответил на свой вопрос, это подход, которому я следую:

@RunWith(Suite.class)
@SuiteClasses({ com.manuel.package1..AllTests.class,
                com.manuel.package2.AllTests.class })
public class RunAllTests {

}

А затем в каждом AllTests.class

@RunWith(Suite.class)
@SuiteClasses({ TestCase1.class, TestCase2.class, TestCase3.class, TestCase4.class })
public class AllTests {

}
person Manuelarte    schedule 11.11.2013