是否可以在TestContext中传递或设置参数并在TestBase类中使用它?

时间:2018-12-04 07:16:44

标签: c# visual-studio unit-testing

我有一个看起来像这样的单元测试类。

[TestClass]
public class DemoTests : TestBase
{
    [TestMethod]
    public async Task TestWithInMemory()
    {
        using(var context = new InMemoryDbContext())
        {
             //Do something with the context
        }
    }

    [TestMethod]
    public async Task TestWithSqlServer()
    {
        using(var context = new SqlServerDbContext())
        {
             //Do something with the context
        }
    }
}

我的TestBase类看起来像这样。

[TestClass]
public class TestBase
{
    public TestContext TestContext { get; set; }

    [TestInitialize]
    public void Initialise()
    {
        if(parameter passed from test method is InMemory)
        {
            //create InMemory database context
        }
        else
        {
            //create SQL Server database context
        }
    }

    [TestCleanup]
    public void Cleanup()
    {
        //Dispose 
    }
}

基本上,我尝试根据情况使用InMemory和SQL Server提供程序编写测试用例。我知道我可以基于此将测试用例分离到单独的文件中。但是TestMethod是否可以让TestBase类知道它要使用哪个提供程序?或者甚至可以将参数(例如布尔值)从TestMethod发送到TestBase?

谢谢!

0 个答案:

没有答案