如何在单元测试项目中运行测试(当方法有参数时)

时间:2013-07-03 06:31:25

标签: c# asp.net-mvc entity-framework unit-testing seed

我有一个单元测试我想命名参数,例如:

[TestMethod]
public void Register(bool DoSeed = false, AccountViewModelForReg VM = null)
{
    AutoMapperConfig.Configure(); //TODO move to global

    AccountController C = new AccountController();
    VM = new AccountViewModelForReg()
    {
        Username = "testuser1",
        Password = AccountHelper.HashPassword("a"),
        Email = "testuser1"+CommonEmailSuffix,
        Email2 = "testuser1"+CommonEmailSuffix
    };
    var Result = C.Register(VM, true) as ViewResult;
    Assert.AreEqual("Register", Result.ViewName);
}

我的EF Seeder就是这样,我可以通过传入参数来使用单元测试来播种。但是因为该方法需要参数,所以Visual Studio不会将其视为要运行的测试。我怎么能绕过这个?

2 个答案:

答案 0 :(得分:1)

AFAIK,VS单元测试不支持参数化单元测试 你唯一的方法是编写另一个无参数的重载并从那里调用你的方法。顺便说一句:可选参数只不过是语法糖;该方法仍然需要参数。

示例:

public void Test_One(bool p1, string p2)
//...
public void Test_One()
{
   Test_One(true, "defaultvalue");
}

你应该看看另一个框架,例如NUnit,允许您轻松地对测试进行参数化(即使是范围,参数的自动组合等):请参阅http://nunit.org/index.php?p=parameterizedTests&r=2.5

答案 1 :(得分:1)