所有测试前都是init mock数据库

时间:2017-02-22 11:34:53

标签: c# sqlite unit-testing nunit parameter-passing

我使用HttpSelfHostServer构建一个使用SQLite数据库的RESTful API。 我使用Moq程序集来模拟我的数据库。

使用Nunit我使用TestFixture方法编写SetUp,构造MockDatabaseContext。我有几个测试,使用这个MockDatabaseContext

现在我想在测试项目的所有测试中使用MockDatabaseContext

我读过文章说:

  

“...任何命名空间之外的SetUpFixture都提供SetUp和   TearDown为整个组件......“

我将SetUp方法移动到另一个类Init,该类放在非命名空间中,并将属性更改为OneTimeSetUp。在我按照自己的意愿运行程序集中的所有测试之前,该设置的方法只运行了一次。

但是OneTimeSetUp方法构造MockDatabaseContext在非静态Init类中。 如何将创建的MockDatabaseContext传递给所有其他测试,这些测试都是在OneTimeSetUp之后开始的?

[SetUpFixture]
public class Init
{
    public Mock<MyDBContext> MockDatabaseContext

    [OneTimeSetUp]
    public void OneTimeSetUpMethod()
    {
        MockDatabaseContext = SomeFunctionConstructsMockedContext();
    }
}

namespace All.My.Tests
{
    [TestFixture]
    public class TestFixture1
    {
        [TestCase]
        public void Test1() {/* Here i want to be able using MockDatabaseContext */}
        public void Test2() {/* Here i want to be able using MockDatabaseContext */}
        public void Test3() {/* Here i want to be able using MockDatabaseContext */}
    }
    /* Some other fixtures with tests that must have MockDatabaseContext */
}

感谢名单

0 个答案:

没有答案