gpt4 book ai didi

c# - 使用 Single 作为 Assert 是一种不好的做法吗?

转载 作者:可可西里 更新时间:2023-11-01 08:07:50 26 4
gpt4 key购买 nike

我正在测试一种操作集合的方法。给定一组参数,它应该只包含一个与条件匹配的元素。 编辑:该集合可能还有其他几个不符合条件的元素。

我正在使用 Single测试该行为,效果很好,因为如果根本没有匹配项或多个匹配项,它将通过抛出异常来使测试失败。但是没有实际的断言,它以某种方式违反了arrange、act、assert。所以我想知道这是否是一种不好的做法,是否有更好的方法来做到这一点。

以下伪代码演示我的问题:

[TestMethod]
public void TestMethod()
{
List list = MethodToTest(param1, param2);

list.Single(s => s.Matches(condition));

//No actual Assert
}

最佳答案

I'm wondering if this is a bad practice and if there's a better way to do this.

是的,是的。

it will fail the test by throwing an exception if there is no match at all or more than one match.

不要因抛出异常而导致测试失败。 通过未通过测试而未通过测试。您的测试框架具有断言测试所测试条件的机制。你买了这个测试框架,现在你拒绝使用它的特性。按照设计使用的方式使用测试框架,或者,如果您不喜欢它,请放弃它并选择您更喜欢的框架。但不要绕过它的机制。

意外异常不一定测试失败;它们可能是错误测试。您需要能够分辨出差异。你告诉的方式是:如果异常起源于被测代码,那么它是代码中的错误。如果它源自测试代码,则它是测试中的错误。现在您可以通过抛出测试代码来检测被测代码中的错误。现在更难说出错误在哪里。不要让你 future 的自己那么难想;不要编写故意避免测试平台约定的令人惊讶的代码。

关于c# - 使用 Single 作为 Assert 是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39963870/

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