0

我是编写junit的新手。我有我的下面的java api,它每次都从数据库中获取一个唯一的值。它只包含一个查询。我需要为下面的api编写junit。任何人都可以给出一些建议我应该如何处理?

public static int getUniqueDBCSequence() throws Exception
    {

        int w_seq = 0;
        QueryData w_ps = null;
        ResultSet w_rs = null;

        try
        {
            w_ps = new QueryData("SELECT GETUNIQUENUMBER.NEXTVAL FROM DUAL");
            w_rs = SQLService.executeQuery(w_ps);

            while ( w_rs.next() )
            {
                w_seq = w_rs.getInt(1);
            }

        }
        catch (Exception a_ex)
        {
            LOGGER.fatal("Error occured : " + a_ex.getMessage());
        }
        finally
        {
            SQLService.closeResultSet(w_rs);
        }
        return w_seq;
    }
4

1 回答 1

0

您只使用静态方法:在被测类中,但也在它的依赖项中。
它真的不是 JUnit 的可测试代码。

此外,你想测试什么幺正?
你的测试没有实质性的逻辑。

您可以制作SQLService.executeQuery()一个方法实例来模拟它。但真的有什么兴趣去嘲讽呢?
断言返回结果 w_seq = w_rs.getInt(1);
看起来应该避免价值很小的技术断言,并且应该避免维护价值很小的单元测试。

现在,您可以使用 DBunit 或工具进行测试,以填充内存数据库并执行代码。
但是执行的查询与 Oracle 序列有很强的耦合性。
因此,您可能会遇到一些困难。

于 2017-07-24T11:01:01.817 回答