我是编写junits的新手。我的下面的java api每次从database获取一个唯一的值。它只包含一个查询。我需要写下junit for api.can任何人都给出一些建议我该怎么办?方法??
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;
}
答案 0 :(得分:0)
您只使用静态方法:在被测试的类中,但也在它的依赖项中
它实际上不是JUnit的可测试代码。
此外,你想做什么测试单一?
你的测试没有实质性的逻辑。
您可以使SQLService.executeQuery()
方法实例能够模拟它。但真的有兴趣嘲笑它吗?
断言结果返回w_seq = w_rs.getInt(1);
?
看起来应该避免技术断言价值很低并且维持单位测试的价值很低。
现在,您可以使用DBunit或工具进行测试,以填充内存数据库并执行代码。
但执行的查询与Oracle序列有很强的耦合
所以,你可能会遇到一些困难