【发布时间】:2009-11-23 11:15:33
【问题描述】:
我正在为数据库操作编写一些 NUnit 测试。显然,如果Add() 失败,那么Get() 也会失败。但是,当 Add() 和 Get() 都失败时,它看起来很具有欺骗性,因为看起来有两个问题而不是一个。
有没有办法指定运行测试的“顺序”,如果第一个测试失败,则忽略以下测试?
在同一行中,有没有办法自己订购单元测试类?例如,我想先运行基本数据库操作的测试,然后再运行 UI 中的往返数据测试。
注意:这与让测试相互依赖有点不同,它更像是在运行一堆测试之前确保某些东西首先工作。例如,如果您一开始就无法连接到数据库,则运行一堆数据库操作是浪费时间。
编辑:似乎有些人没有抓住重点。我不这样做:
[Test]
public void AddTest()
{
db.Add(someData);
}
[Test]
public void GetTest()
{
db.Get(someData);
Assert.That(data was retrieved successfully);
}
相反,我正在这样做:
[Test]
public void AddTest()
{
db.Add(someData);
}
[Test]
public void GetTest()
{
// need some way here to ensure that db.Add() can actually be performed successfully
db.Add(someData);
db.Get(somedata);
Assert.That(data was retrieved successfully);
}
也就是说,我想先确保数据可以添加,然后才能测试是否可以检索。人们假设我使用第一个测试中的数据来通过第二个测试,而事实并非如此。在尝试另一项依赖于它的操作之前,我正在尝试确保一项操作可能。
正如我已经说过的,您需要确保在运行数据库操作之前可以连接到数据库。或者您可以在执行文件操作之前打开文件。或者在测试 API 调用之前连接到服务器。或者……你明白了。
【问题讨论】:
-
接受的答案是错误!查看 cmets
标签: unit-testing nunit