使用数据库数据的 C# 单元测试
C# Unit Test using database data
我目前正在使用 nunit 编写单元测试。为此,我从数据库中获取数据并通过我想要测试的方法,然后我比较数据库 table 数据与方法 return 数据相同。我怀疑这是否适合做单元测试?有人可以解释一下吗?我已经尝试过最小起订量测试,但我的方法存在一些问题。有时 finasync 不适用于 Moq 测试中的 return 列表。然后我放弃它并转向 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?
您的单元测试方式并不是很好的做法。让我解释。这里有两件事需要考虑。让我从第一个开始。
第一的
通常您希望进行单元测试,其中输入和输出是固定的,或者至少独立于外部数据源,例如数据库中的 tables/rows/records。因此,一般来说,在单元测试中在内存中创建数据集会更好也更容易。
第二
您需要注意或什么这正是您想要测试的。在你的情况下,你似乎正在测试 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
。也许有一些内部逻辑正在进行,您可以对其进行测试。但要这样做,请使用涵盖所有逻辑场景的静态数据集。您不希望 test/build 因为有人删除了一些记录而失败。
我目前正在使用 nunit 编写单元测试。为此,我从数据库中获取数据并通过我想要测试的方法,然后我比较数据库 table 数据与方法 return 数据相同。我怀疑这是否适合做单元测试?有人可以解释一下吗?我已经尝试过最小起订量测试,但我的方法存在一些问题。有时 finasync 不适用于 Moq 测试中的 return 列表。然后我放弃它并转向 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?
您的单元测试方式并不是很好的做法。让我解释。这里有两件事需要考虑。让我从第一个开始。
第一的通常您希望进行单元测试,其中输入和输出是固定的,或者至少独立于外部数据源,例如数据库中的 tables/rows/records。因此,一般来说,在单元测试中在内存中创建数据集会更好也更容易。
第二您需要注意或什么这正是您想要测试的。在你的情况下,你似乎正在测试 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
。也许有一些内部逻辑正在进行,您可以对其进行测试。但要这样做,请使用涵盖所有逻辑场景的静态数据集。您不希望 test/build 因为有人删除了一些记录而失败。