C# 单元测试。关于独立测试
在否决之前,请听我的问题:) 我使用单元测试。我知道他们必须彼此独立。虽然如何测试书籍的存储库。必须创建第一本书,然后更新,然后删除。我有三个单元测试。对这些单元测试具有依赖性难道不是正确的吗C# 单元测试。关于独立测试,c#,unit-testing,nunit,C#,Unit Testing,Nunit,在否决之前,请听我的问题:) 我使用单元测试。我知道他们必须彼此独立。虽然如何测试书籍的存储库。必须创建第一本书,然后更新,然后删除。我有三个单元测试。对这些单元测试具有依赖性难道不是正确的吗 [TestFixture] public class CompanyRepositoryTests { public void CreateCompany() { // This must be called 1
[TestFixture]
public class CompanyRepositoryTests
{
public void CreateCompany()
{
// This must be called 1
}
public void UpdateCompany()
{
// This must be called 2
}
public void DeleteCompany()
{
// This must be called 3
}
}
您可以模拟依赖项
看看你可以模拟依赖关系
在本练习中,您将学习如何测试修改数据库的CRUD操作。需要考虑的前提之一是测试不一定按特定顺序运行。另一个是,每个测试都可以根据需要执行任意多次。因此,您的测试不应该依赖于以前的测试执行。例如,如果您的测试要删除数据库中的记录,则测试的设置应提供要删除的记录。这样,可以重复执行测试
在本练习中,您将学习如何测试修改数据库的CRUD操作。需要考虑的前提之一是测试不一定按特定顺序运行。另一个是,每个测试都可以根据需要执行任意多次。因此,您的测试不应该依赖于以前的测试执行。例如,如果您的测试要删除数据库中的记录,则测试的设置应提供要删除的记录。这样,可以重复执行测试 单元测试(与集成测试相反)的一点是,它们只应该测试单个方法。例如,如果您有一个如下所示的方法:
public void createCompany(Company c) {
if (c == null) {
throw new NullPointerException();
}
database.create(c);
}
良好的it测试只能测试两件事:
null
,则抛出NullPointerException
database.create()
database.create()
是否真的做了任何有用的事情是另一个问题。这与数据库的单元测试有关
在您的情况下,按照建议模拟底层存储,并编写适当的单元测试
另一方面,在集成测试中,具有依赖关系显然是很好的。即使如此,您的测试应该是
- 测试1:刷新数据库:创建一个公司,确保它在那里李>
- 测试2:刷新数据库:创建一个公司,删除它,确保它消失
- 测试3:刷新数据库:创建一个公司,修改它,确保它 成功了
public void createCompany(Company c) {
if (c == null) {
throw new NullPointerException();
}
database.create(c);
}
良好的it测试只能测试两件事:
null
,则抛出NullPointerException
database.create()
database.create()
是否真的做了任何有用的事情是另一个问题。这与数据库的单元测试有关
在您的情况下,按照建议模拟底层存储,并编写适当的单元测试
另一方面,在集成测试中,具有依赖关系显然是很好的。即使如此,您的测试应该是
- 测试1:刷新数据库:创建一个公司,确保它在那里李>
- 测试2:刷新数据库:创建一个公司,删除它,确保它消失
- 测试3:刷新数据库:创建一个公司,修改它,确保它 成功了
每个测试都应该从头开始。每个测试都必须是独立的,这不是可选的。测试所需的任何数据都需要在测试范围内创建。因此,这意味着我必须在一个方法内调用三个方法Create、Update和Delete,比如说:“CRUDCompany”?每个测试都必须是独立的,这不是可选的。测试所需的任何数据都需要在测试范围内创建。因此,这意味着我必须在一个方法内调用三个方法Create、Update和Delete,比如说:“CRUDCompany”?我根本不想使用mock。我将使用test database+方法必须使用相同的数据库进行测试,我根本不想使用mock。我将使用测试数据库+方法必须测试相同的数据库谢谢!很好的方法。我会照办的。非常感谢你,朋友,我有一个简短的问题。如何确保并创建每次刷新的数据库?谢谢!很好的方法。我会照办的。非常感谢你,朋友,我有一个简短的问题。如何确保并创建每次刷新的数据库?