我遇到参数问题,我想检查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方法执行以下操作: 首次登录 然后尝试删除域名。
答案 0 :(得分:2)
从评论中,问题在于方法:
[TestMethod]
public void DeleteDomainTest(bool loginFirst = true) {...}
被标记为测试方法(通过属性),并且有一个参数,参数的原因是它来自"应用程序中的其他方法"。测试框架希望测试方法无参数。
这表明测试方法存在根本的误用。如果其他代码使用某种方法,那么它不是一种测试方法。测试方法应始终是独立的和顶级的。你应该能够通过稍微重构来解决这个问题:
[TestMethod]
public void DeleteDomainTest() { DeleteDomainImpl(); }
internal void DeleteDomainImpl(bool loginFirst = true) {...}
现在我们有一个DeleteDomainImpl
方法可以根据需要从其他测试中使用,而DeleteDomainTest
实际上是在这种情况下运行它的测试 - 使用默认参数。