JUnit + DbUnit - 扩展DatabaseTestCase时未找到任何测试

时间:2016-07-16 20:29:12

标签: java junit integration-testing dbunit

我最近开始使用DbUnit并且我试图编写一个非常简单的集成测试,只是为了填充一个包含3行的表。阅读DbUnit Getting Started Guide,它告诉我创建一个数据集文件。我的数据集xml文件看起来完全像这样:

true

然后,我必须创建一个扩展<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注释,就像任何其他JUnit测试用例一样)。我创建的课程如下:

@Test

之后,我尝试运行测试用例但出现以下错误:

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) ,JUnit会识别测试用例并正常运行,但是扩展它并没有。我试图清理并重新编译,但它没有工作。我也尝试在我使用的IDE(Intellij Idea)之外运行测试,但我再次没有成功。

有没有人遇到同样的问题? 非常感谢你提前。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

JUnit 3 vs 4 runner差异可能是原因(你没有提到JUnit和dbUnit版本,也没有提到如何管理它们)。并且不同的工具具有不同的运行默认要求(例如,Maven默认只运行类作为类名后缀为&#34的测试;测试&#34;)。

请注意,不需要扩展dbUnit类(我不会),不这样做可以消除遇到的问题。在您提到的那个页面的下方是两个部分,描述了如何:

将两者结合起来就是我多年来所做的事情 - 拥有我自己的普通内容的父测试类,然后DI(或实例化)所需的DBTestCase(通常是PrepAndExpectedTestCase)。