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

时间:2018-05-10 10:13:22

标签: c# visual-studio coded-ui-tests

我遇到参数问题,我想检查Application Login是否设置为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方法执行以下操作: 首次登录 然后尝试删除域名。

1 个答案:

答案 0 :(得分:2)

从评论中,问题在于方法:

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

被标记为测试方法(通过属性),并且有一个参数,参数的原因是它来自"应用程序中的其他方法"。测试框架希望测试方法无参数。

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

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

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

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