在downvote我的问题之前请听:) 我用单元测试。我知道他们必须彼此独立。虽然如何测试存储库的书籍。必须创建第一本书,然后更新然后删除。我有三个单元测试。对这些单元测试有依赖是不对的?
[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
}
}
答案 0 :(得分:4)
关于单元测试(与集成测试相反)的一个问题是它们只应该测试单个方法。例如,如果您有一个如下所示的方法:
public void createCompany(Company c) {
if (c == null) {
throw new NullPointerException();
}
database.create(c);
}
对它的一个很好的测试只会测试两件事:
null
,则会抛出NullPointerException
null
,则会调用database.create()
database.create()
实际上是否有用是一个不同的问题。一个与单元测试数据库有关。
在您的情况下,按照建议模拟底层存储,并编写适当的单元测试。
另一方面,在集成测试中,依赖性显然很好。即使如此,您的测试应该看起来像
每个测试都应该从头开始。
答案 1 :(得分:1)
在本练习中,您将学习如何测试修改数据库的CRUD操作。要考虑的一个前提是测试不一定按特定顺序运行。另一个是每个测试都可以根据需要执行多次。因此,您的测试不应该依赖于以前的测试执行。例如,如果您的测试要删除数据库中的记录,则测试的设置应提供要删除的记录。这样,测试可以重复执行。
答案 2 :(得分:0)
你可以模拟依赖关系。