gpt4 book ai didi

unit-testing - jUnit fail() 约定

转载 作者:行者123 更新时间:2023-12-04 11:13:27 24 4
gpt4 key购买 nike

我想知道,按照惯例,当测试失败时,是否适合:

  • 说出失败的原因(业务逻辑)
  • 说明为什么会看到消息(应该抛出异常,但没有)

  • 例如,
    fail("Accessed the element which does not exist");

    或者
    fail("ArrayIndexOutOfBoundException was expected but something bad happened");

    通常首选/接受哪一个?

    最佳答案

    首先,如果您希望测试的 API 抛出异常,而不是执行 try-catchfail() ...

    @Test
    public void testMe() {
    try {
    api.testThis();
    fail("should not reach here");
    }
    catch(MyException e) {}
    }

    ... 你应该做这个:-
    @Test(expected=MyException.class)
    public void testMe() {
    api.testThis();
    }

    也就是说,我很少使用 fail() .如果我需要执行某些验证并且条件失败,我很可能会使用断言而不是使用 fail() ... 例如:-

    ... 代替...
    @Test
    public void testMe() {
    boolean bool = api.testThis();
    if (!bool) {
    fail("should be true because bla bla bla");
    }
    }

    ... 做这个:-
    @Test
    public void testMe() {
    boolean bool = api.testThis();
    assertTrue("bla bla bla",bool);
    }

    但是,如果您确实需要使用 fail() , 详细解释为什么它失败,而不是“不应该到达这里”或“应该在这里失败”,因为这对阅读测试用例的人没有帮助。

    当然,这些只是简单的例子......但我想我明白我的观点。 :)

    关于unit-testing - jUnit fail() 约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4911292/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com