JUnit Test Suite: сначала создать набор данных, прежде чем запускать тесты - PullRequest
1 голос
/ 09 апреля 2011

Я хочу настроить данные для всего моего набора тестов до начала любого из тестов.Я понимаю, что maven запускает тест по одному, а не набор, поэтому я не могу использовать @SuiteClasses.Также я не хочу создавать набор данных через dbunit-maven-plugin, набор данных должен быть создан через REST.Есть ли способ, при котором я могу запускать определенные классы как часть maven pre-интеграционного теста и пост-интеграционного теста для установки и очистки?

Например

public class TestInit
{
    public void setUp()
    {
       //Data setup
    }

    public void tearDown()
    {
       //Data clean up
    }
}

make setup runперед началом набора тестов и tearDown после его окончания.Или я могу запустить 2 отдельных класса, таких как TestInitSetup и TestInitTearDown?

Ответы [ 2 ]

4 голосов
/ 27 апреля 2013

Здесь - решение на основе правил. Это может быть полезно.

Синтаксис выглядит следующим образом:

public class SimpleWayToUseDataSetTest {
    @Rule
    public DataSetRule rule = new DataSetRule(); // <-- this is used to access to the testVectors from inside the tests

    public static class MyDataSet extends SimpleTestVectors {
        @Override
        protected Object[][] generateTestVectors() {
            return new Object[][] {
                    {true,  "alpha", new CustomProductionClass()}, // <-- this is a testVector
                    {true,  "bravo", new CustomProductionClass()},
                    {false, "alpha", new CustomProductionClass()},
                    {false, "bravo", new CustomProductionClass() }
            };
        }
    }

    @Test
    @DataSet(testData = MyDataSet.class) // <-- annotate the test with the dataset
    public void testFirst() throws InvalidDataSetException { // <-- any access to testData may result in Exception
        boolean myTextFixture = rule.getBoolean(0); // <-- this is how you access an element of the testVector. Indexing starts with 0
        String myAssertMessage = rule.getString(1); // <-- there are a couple of typed parameter getters
        CustomProductionClass myCustomObject = (CustomProductionClass) rule.getParameter(2); // <-- for other classes you need to cast
        Assert.assertTrue(myAssertMessage, true);
    }
}
1 голос
/ 12 апреля 2011

Если вы не можете найти решение в JUnit, TestNG поддерживает @BeforeSuite и @AfterSuite, которые, кажется, делают то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...