如何使用两种不同的设置运行一组 nUnit 测试?

发布于 2024-08-23 18:47:56 字数 381 浏览 6 评论 0原文

(抱歉,标题不清楚,如果您能想出更好的标题,请对其进行编辑)

我希望在两个不同的数据存储上运行相同的测试,我可以在 Setup() 方法中创建数据存储。

那么我是否应该有一个包含所有测试和抽象 SetUp() 方法的超类,然后为每个数据存储创建一个子类?

或者有更好的方法吗?

请参阅“不区分大小写的字符串与 linq 进行比较-to-sql 和 linq-to-objects”,用于我正在测试的内容。

(Sorry for the unclear title, please edit it if you can come up with a better one)

I wish to run the same tests over two different data stores, I can create the data stores in the Setup() method.

So should I have a super class that contains all the tests and an abstract SetUp() method, then have a subclass for each data store?

Or is there a better way?

See "Case insensitive string compare with linq-to-sql and linq-to-objects" for what I am testing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

长伴 2024-08-30 18:47:56

一个简单的解决方案是这样的。

所有测试用例都位于抽象类中,例如 TestBase 类中。例如:

public abstract class TestBase
{
    protected string SetupMethodWas = "";

    [Test]
    public void ExampleTest()
    {
        Console.Out.WriteLine(SetupMethodWas);    
    }

    // other test-cases
}

然后为每个设置创建两个子类。因此,每个子类都将使用 it-setup 方法以及所有继承的测试方法单独运行。

[TestFixture]
class TestA : TestBase
{
    [SetUp]
    public void Setup()
    {
        SetupMethodWas = "SetupOf-A";    
    }
}
[TestFixture]
class TestB : TestBase
{
    [SetUp]
    public void Setup()
    {
        SetupMethodWas = "TestB";
    }
}

这效果棒极了。然而,对于更简单的测试,参数化测试是更好的解决方案

A simple solution is this.

All your test-cases are in an abstract class for example in the TestBase-class. For example:

public abstract class TestBase
{
    protected string SetupMethodWas = "";

    [Test]
    public void ExampleTest()
    {
        Console.Out.WriteLine(SetupMethodWas);    
    }

    // other test-cases
}

Then you create two sub-classes for each setup. So each sub-class will be run a individual with it-setup method and also all inherited test-methods.

[TestFixture]
class TestA : TestBase
{
    [SetUp]
    public void Setup()
    {
        SetupMethodWas = "SetupOf-A";    
    }
}
[TestFixture]
class TestB : TestBase
{
    [SetUp]
    public void Setup()
    {
        SetupMethodWas = "TestB";
    }
}

This works wonderful. However for simpler tests parameterized tests are a better solution

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文