尝试执行登录方法的参数计数不匹配

Parameter count mismatch trying to execute login method

我的参数有问题,我想检查应用程序登录是否设置为 true,然后执行 LoginFirst 方法,但每次我尝试执行测试时都会收到此错误:

Message: Test method AppNameWebMultiMap.Bader.DeleteDomain.DeleteDomainTest threw exception: 
System.Reflection.TargetParameterCountException: Parameter count mismatch.

方法如下:

[TestMethod]
private void LoginFirst()
{
    var login = new AppLogin();
    login.AppLoginBySaTest();
}

这是我的执行方式:

[TestMethod]
    public void DeleteDomainTest(bool loginFirst = true)
    {
        //Login 
        if (loginFirst)
        {
            LoginFirst();
        }
    //Execute delete domains function

    }

DeleteDomainTest 方法执行以下操作: 首次登录 然后尝试删除域。

从评论来看,这里的问题是方法:

[TestMethod]
public void DeleteDomainTest(bool loginFirst = true) {...}

被标记为测试方法(通过属性),并且有一个参数,参数的原因是它在 "other methods in the application" 中被使用。测试框架希望测试方法是无参数的。

这表明测试方法存在根本性的误用。如果一个方法被其他代码使用,那么它不是测试方法。测试方法应该始终是独立的和顶级的。您应该能够通过稍微重构来简单地解决这个问题:

[TestMethod]
public void DeleteDomainTest() { DeleteDomainImpl(); }

internal void DeleteDomainImpl(bool loginFirst = true) {...}

现在我们有一个 DeleteDomainImpl 方法可以根据需要从其他测试中使用,还有一个 DeleteDomainTest 实际上是在这种情况下运行它的测试 - 使用默认参数。