当前位置:  开发笔记 > 编程语言 > 正文

使用NUnit在派生类中设置?

如何解决《使用NUnit在派生类中设置?》经验,为你挑选了1个好方法。

如果我有以下代码:

[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的类派生出来的?



1> Iain Holder..:

你必须直接调用该方法.

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

编辑:我没有尝试过,但也许部分方法也可能有效.我宁愿做上面的事情.

Edit2:我刚尝试使用部分方法.它没用.即使它确实如此,我认为调用基类仍然会更容易.

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有