NUnit不服从属性继承

Mic*_*ael 11 c# nunit unit-testing

我对NUnit有一个问题 - 想知道是否有人有任何想法.

我们使用的是NUnit 2.5.3.9345和C#3.5.

请使用以下代码:

public class UnitTestBase
{
    [TestFixtureSetUp]
    public void SetUpTestFixture()
    {
        //Do something in base
    }
}

[TestFixture]
public class SomeTestClass : UnitTestBase
{
    [TestFixtureSetUp]
    public void FixtureSetUp()
    {
        //Do something in test class
    }

    [Test]
    public void SomeTest()
    {
        //Some assertion
    }
}
Run Code Online (Sandbox Code Playgroud)

根据文档,如果我运行SomeTestClass.SomeTest(),UnitTestBase.SetUpTestFixture()应该在之前调用SomeTestClass.FixtureSetUp().

情况并非如此 - 只有在我没有[TestFixtureSetUp]在派生类中提供方法时才会调用基本方法.

有什么想法吗?让我真的很困惑!

谢谢.

Mar*_*man 2

我没有这个问题。我用以下方法测试了结果:

派生测试

[TestFixture]
public class DerivedTest : TestBase
{

    [TestFixtureSetUp]
    public void FixtureSetup()
    {

        File.AppendAllText("Out.txt", string.Format("TestFixtureSetUp From DerivedTest{0}", Environment.NewLine));
    }

    [TestFixtureTearDown]
    public void FixtureTearDown()
    {
        File.AppendAllText("Out.txt", string.Format("TestFixtureTearDown Down From DerivedTest{0}", Environment.NewLine));
    }

    [SetUp]
    public void Setup()
    {
        File.AppendAllText("Out.txt", string.Format("Setup From DerivedTest{0}", Environment.NewLine));
    }
    [TearDown]
    public void Down()
    {
        File.AppendAllText("Out.txt", string.Format("TearDown From DerivedTest{0}", Environment.NewLine));
    }

    [Test]
    public void DoATest()
    {
        File.AppendAllText("Out.txt", string.Format("Did a Test{0}", Environment.NewLine));
    }
}
Run Code Online (Sandbox Code Playgroud)

测试库

public class TestBase
{

    [TestFixtureSetUp]
    public void BaseTestFixtureSetUp()
    {
        File.AppendAllText("Out.txt", string.Format("TestFixtureSetUp From TestBase{0}", Environment.NewLine));
    }

    [TestFixtureTearDown]
    public void BaseTestFixtureTearDown()
    {
        File.AppendAllText("Out.txt", string.Format("TestFixtureTearDown From TestBase{0}", Environment.NewLine));
    }

    [SetUp]
    public void BaseSetup()
    {
        File.AppendAllText("Out.txt", string.Format("Setup From TestBase{0}", Environment.NewLine));
    }

    [TearDown]
    public void TearDown()
    {
        File.AppendAllText("Out.txt", string.Format("TearDown From TestBase{0}", Environment.NewLine));
    }
}
Run Code Online (Sandbox Code Playgroud)

这会产生以下输出:

TestFixtureSetUp From TestBase
TestFixtureSetUp From DerivedTest
Setup From TestBase
Setup From DerivedTest
Did a Test
TearDown From DerivedTest
TearDown From TestBase
TestFixtureTearDown Down From DerivedTest
TestFixtureTearDown From TestBase
Run Code Online (Sandbox Code Playgroud)

我能够使用 ReSharper 5 beta 和 Nunit GUI v 2.5.3.9345(32 位)测试输出

编辑 在工作时,ReSharper 4.5 中的测试运行程序无法正常工作,但是使用相应的 NUnit.exe/NUnit-86.exe 在 x86 和 x64 中运行构建的测试项目会产生有效的输出。