gpt4 book ai didi

c# - 在单元测试中循环

转载 作者:可可西里 更新时间:2023-11-01 03:05:52 27 4
gpt4 key购买 nike

我们可以在单元测试中有一个循环吗?

我的方法返回一个 IEnumerable<IEnumerable> ,我想对 IEnumerable<IEnumerable> 所在的逻辑进行单元测试被 build 。基本上我想测试 IEnumerable 中元素的数量符合预期。

我想不出另一种方法来测试内部 IEnumerable没有循环语句。如果这是一个好的做法,请告诉我。

最佳答案

没有技术原因您不能这样做。一个单元测试中可以有多个 Assert 语句。在循环中使用 Assert 语句只是在测试中使用多个 Assert 语句的简写方式。

但是,有些人认为单元测试中应该只有一个 Assert 语句。

我个人不同意 - 我认为测试应该测试一个东西 - 为了做到这一点,有时你可能需要多个 Assert 语句。

如果您的方法返回 Product 的 IEnumerable,并且每个 Product 都包含 Color 的 IEnumerable,那么我认为以下测试没问题:

[Test]
public void All_products_should_have_some_colors()
{
var products = GetProducts();

foreach (var product in products)
{
Assert.IsNotEmpty(product.Colors);
}
}

但是,您确实需要注意,如果 IEnumerable 包含 0 个元素,则循环将永远不会执行任何 Assert 语句,并且您的单元测试将“通过”——而您可能希望它失败。

要补救这种情况,您可以进行单独的测试以确保 IEnumerable 中的元素多于 0 个(即 GetProducts 实际上确实返回了一些产品):

Assert.IsNotEmpty(products);

关于c# - 在单元测试中循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5847649/

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