我正在为我的数据数组类编写测试用例。对于这部分,索引在0到30000之间是可以的。
public short value(int index) throws Exception {
// what block-th buffer
int block = (index * REC_SIZE) / BLOCK_SIZE;
int offset = (index * REC_SIZE) % BLOCK_SIZE;
byte[] curr = bufferPool.getBuffer(block).readBuffer();
short returnValue = ByteBuffer.wrap(curr)
.getShort(offset + INDEX_VALUE);
assert ((returnValue > 0) && (returnValue <= 30000)) : "Invalid"
+ " < Value >: not between 1 to 30000";
return returnValue;
}
但我还需要测试断言行,即
assert ((returnValue > 0) && (returnValue <= 30000)) : "Invalid"
+ " < Value >: not between 1 to 30000";
如何编写junit测试,我可以检查索引何时不在0到30000之间?
答案 0 :(得分:1)
你可以对测试说你期望抛出一个异常(因为我记得很清楚JUnit 4)。
@Test (expected = Exception.class)
public void myTest (){
value(3005);
}
但要小心断言可以被禁用,所以我会在任何计算之前使用IllegalArgumentException
检查索引的值然后
@Test (expected = IllegalArgumentException.class)
public void myTest (){
value(3005);
}
重新阅读您的问题,我不确定您是否要测试index
的值(在这种情况下您可以使用IllegalArgumentException
)或{{1 (在这种情况下,您可以使用自定义异常)。
但是不要在测试用例中使用assert语句。断言语句仅适用于程序的调试模式。如果有人在禁用断言的情况下运行它,那么您的检查甚至都不会被测试。因此,抛出一个异常(并在我展示的单元测试中捕获它们)。