gpt4 book ai didi

unit-testing - 如何忽略基于 NUnit 中另一个测试的测试?

转载 作者:行者123 更新时间:2023-12-04 01:45:51 26 4
gpt4 key购买 nike

我正在为数据库操作编写一些 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 调用之前连接到服务器。或者……你明白了。

最佳答案

NUnit 支持“Assume.That”语法来验证设置。这被记录为 Theory 的一部分。 (感谢 clairestreb)。在 NUnit.Framework命名空间是一个类 Assume .引用文档:

/// Provides static methods to express the assumptions
/// that must be met for a test to give a meaningful
/// result. If an assumption is not met, the test
/// should produce an inconclusive result.

所以在上下文中:
public void TestGet() {
MyList sut = new MyList()
Object expecting = new Object();
sut.Put(expecting);
Assume.That(sut.size(), Is(1));
Assert.That(sut.Get(), Is(expecting));
}

关于unit-testing - 如何忽略基于 NUnit 中另一个测试的测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1782496/

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