gpt4 book ai didi

nunit - 使用 NUnit 在派生类中设置?

转载 作者:行者123 更新时间:2023-12-04 10:46:20 31 4
gpt4 key购买 nike

如果我有以下代码:

[TestFixture]
public class MyBaseTest
{
protected ISessionManager _sessionManager;

[SetUp]
public void SetUp() { /* some code that initializes _sessionManager */ }
}

[TestFixture]
public class MyDerivedTest : MyBaseTest
{
IBlogRepository _repository;

[SetUp]
public void SetUp() { /* some code that initializes _repository */ }

[Test]
public void BlogRepository_TestGoesHere() { /* some tests */ }
}

...NUnit 不调用基本的 SetUp 例程。这是意料之中的,我对它本身没有问题。我可以让派生的 SetUp 首先调用基础的 SetUp,如下所示:

[TestFixture]
public class MyDerivedTest : MyBaseTest
{
IBlogRepository _repository;

[SetUp]
public new void SetUp()
{
base.SetUp();
/* some code that initializes _repository */
}

这是丑陋的。如果它是一个构造函数,我就不必了。

我可以使用“模板方法”模式,并具有以下内容:

public void MyBaseTest
{
abstract void SetUp();

[SetUp]
public void BaseSetUp()
{
/* base initialization */
SetUp(); // virtual call
}
}

我也不是特别喜欢这个。

当他们的测试类需要 SetUp,而它们派生自另一个也需要 SetUp 的类时,您会怎么做?

最佳答案

您必须直接调用该方法。

   [SetUp]
public void DerivedSetUp()
{
base.BaseSetUp();
// Do something else
}

编辑:我还没有尝试过,但也许部分方法也可以。不过,我更愿意执行上述操作。

Edit2:我刚刚尝试使用部分方法。它没有用。即使这样做了,我认为调用基类仍然会更容易。

关于nunit - 使用 NUnit 在派生类中设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/549002/

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