gpt4 book ai didi

使用数据库数据的 C# 单元测试

转载 作者:行者123 更新时间:2023-11-30 18:13:53 27 4
gpt4 key购买 nike

我目前正在使用 nunit 编写单元测试。为此,我从数据库中获取数据并通过我想要测试的方法,然后我比较数据库表数据与方法返回数据相同。我怀疑这是否适合做单元测试?有人可以解释一下吗?我已经尝试过最小起订量测试,但我的方法存在一些问题。有时 finasync 不适用于 Moq 测试中的返回列表。然后我放弃它并转向 nunit 测试。我为 Entity Framework 编写单元测试。

[Test]
public async Task GetFirmSectionListAsync_Count_AreEqual()
{
var fICount = _clientDbContext.FITypes.ToList().Count;
var fIResult = await _firmService.GetFISListAsync(new CancellationToken(), Startup.ConnString);

Assert.AreEqual(fICount, fIResult.Entities.Count);
}

最佳答案

为了尝试回答您的问题,我将引用各个部分:

To do this i get data from the database and pass through the method that i want to test, then i compare database table data are same as the method return data. I have a doubt is this good to do unit test? Can someone explain this?

您的单元测试方式并不是很好的做法。让我解释。这里有两件事需要考虑。让我从第一个开始。

第一的

通常您希望单元测试的输入和输出是固定的,或者至少独立于外部数据源,例如数据库中的表/行/记录。因此,一般来说,在单元测试中在内存中创建数据集会更好也更容易。

第二

您需要知道或什么这正是您想要测试的。在您的情况下,您似乎正在测试 Entity Framework ,您可能认为它已经过测试。

I have tried moq test but it has some problem with my methods. sometimes findasync not work for return list in Moq test. then i giveup it and turned to nunit test. I write unit test for entity framework.

所以,我认为还是把注意力集中在这些问题上比较好。并且:“为 Entity Framework 编写单元测试” 似乎有点矫枉过正,除非您正在开发它。


那么,什么是测试的好东西?

嗯,你的方法可能像 GetFirmSectionListAsync。也许有一些内部逻辑正在进行,您可以对其进行测试。但要这样做,请使用涵盖所有逻辑场景的静态数据集。您不希望您的测试/构建因为有人删除了一些记录而失败。

关于使用数据库数据的 C# 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51783241/

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