JUnit + DbUnit — тест не найден при расширении DatabaseTestCase

В последнее время я начинаю работать с DbUnit и пытаюсь написать очень простой интеграционный тест, чтобы заполнить таблицу тремя строками. Прочитав Руководство по началу работы DbUnit, мне предлагается создать файл набора данных. Мой XML-файл набора данных выглядит точно так:

<dataset>
    <notaFiscal cliente="Cliente 1" valor="26.5" data='2016-04-04'/>
    <notaFiscal cliente="Cliente 2" valor="30.5" data='2016-05-01'/>
    <notaFiscal cliente="Cliente 3" valor="28.2" data='2015-08-11'/>
</dataset>

Затем мне нужно создать тестовый класс, который расширяет DBTestCase, и реализовать мои методы тестирования (с аннотацией @Test, как и любой другой тестовый пример JUnit). Класс, который я создал, выглядит следующим образом:

public class GerenciadorNFTest extends DBTestCase {

    private GerenciadorNotaFiscal gerenciador = new GerenciadorNotaFiscal();

    public GerenciadorNFTest(String name)
    {
        super( name );
        // PBJDT is an abbreviation of PropertiesBasedJdbcDatabaseTester
        // just for a better visualization
        System.setProperty(PBJDT.DBUNIT_DRIVER_CLASS, 
            "org.postgresql.Driver" );
        System.setProperty(PBJDT.DBUNIT_CONNECTION_URL, 
            "jdbc:postgresql://localhost:5432/dbunit" );
        System.setProperty(PBJDT.DBUNIT_USERNAME, "postgres" );
        System.setProperty(PBJDT.DBUNIT_PASSWORD, "123456" );
    }


    protected IDataSet getDataSet() throws Exception {
        IDataSet dataSet = new FlatXmlDataSetBuilder().build(
            new FileInputStream("notas_fiscais.xml"));
        return dataSet;
    }

    @Test
    public void geraPedido() {
        Pedido p = new Pedido("Diogo", 26d, 5);
        gerenciador.gera(p);
        NotaFiscal notaFiscal = gerenciador.recupera("Diogo");
        Assert.assertEquals(notaFiscal.getCliente(), "Diogo");
    }

}

После этого я попытался запустить тестовый пример, но получил следующую ошибку:

junit.framework.AssertionFailedError: No tests found in teste.GerenciadorNFTest

    at junit.framework.Assert.fail(Assert.java:57)
    at junit.framework.TestCase.fail(TestCase.java:227)

Если я попытаюсь удалить extend DBTestCase, JUnit распознает тестовый пример и запустится нормально, но с расширением это не так. Я пытался очистить и перекомпилировать, но это не сработало. Я также пытался запустить тест вне среды IDE, которую я использую (Intellij Idea), но снова безуспешно.

Кто-нибудь прошел через эту же проблему? Заранее большое спасибо. Любая помощь будет оценена.


person Diogo Moreira    schedule 16.07.2016    source источник


Ответы (1)


Существуют различия между JUnit 3 и 4 бегунами, которые могут быть причиной (вы не упоминаете версии JUnit и dbUnit, а также то, как они управляются зависимостями). И разные инструменты имеют разные требования к запуску по умолчанию (например, Maven по умолчанию запускает только классы как тесты с суффиксом имени класса «Test»).

Обратите внимание, что не требуется расширять класс dbUnit (я этого не делаю), и если этого не делать, это должно устранить возникшую проблему. Чуть ниже на той странице, о которой вы упомянули, находятся два раздела, описывающие, как:

И объединение того и другого — это то, что я делал в течение многих лет: у меня есть собственный родительский тестовый класс для общих вещей, а затем DI (или создание экземпляра) желаемого DBTestCase (обычно PrepAndExpectedTestCase).

person Jeff    schedule 17.07.2016