junit test断言,写测试

时间:2014-11-08 10:22:36

标签: java junit testcase

我正在为我的数据数组类编写测试用例。对于这部分,索引在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之间?

1 个答案:

答案 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语句。断言语句仅适用于程序的调试模式。如果有人在禁用断言的情况下运行它,那么您的检查甚至都不会被测试。因此,抛出一个异常(并在我展示的单元测试中捕获它们)。