(j)Unit testing assertions and error messages?
本问题已经有最佳答案,请猛点这里访问。
我目前正在测试一种方法,我称之为
方法体如下所示
1 2 3 4 5 6 7 8 9 10 | private testedMethod(List<Protocoll> protocolList) { //so something with the protocolList if (something) && (somethingElse) { Assert.isFalse(areTheProtocollsCorrect(p1, p2),"Error, the protocols are wrong"); } if (somethingCompeletlyElse) && (somethingElse) { Assert.isFalse(areTheProtocollsExactlyTheSame(p1, p2),"Error, the protocols are the same"); } } |
来自
IsFALSE:
1 2 3 |
伊斯特鲁:
1 2 3 4 5 |
失败:
1 2 3 4 | public static void fail(String descr) { LOGGER.fatal("Assertion failed:" + descr); throw new AssertException(descr); } |
测试这个方法应该做什么已经准备好了。但我想测试一下这些断言。这个断言是代码的一个重要部分,我想看看当我向它提供错误的数据时,这个方法是否会抛出这些错误。我怎么能用JUnit呢?
首先,我您当前使用的是JUnit,您不应该编写自己的
无论如何,如果要测试断言,则必须编写两种测试用例:正用例和负(失败)用例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | @Test public void positiveCase1() { // Fill your input parameters with data that you know must work: List<Protocoll> protocolList=... testedMethod(protocolList); } @Test public void positiveCase2() { ... } @Test(expected=AssertException.class) public void negativeCase1() { // Fill your input parameters with data that you know must NOT work: List<Protocoll> protocolList=... testedMethod(protocolList); } @Test(expected=AssertException.class) public void negativeCase2() { ... } |
但我仍然坚持使用JUnit标准更好。