NUnit测试覆盖扩展C#

时间:2017-06-27 16:33:16

标签: c# visual-studio unit-testing testing extension-methods

我有以下方法我无法改变

static int A ( string var )
static int A ( this string var )

由于它们被定义为静态,为了测试它们,我想创建一个称为

的公共方法
public static int ATest ( string var )
{
   return A(var);
}
public static int ATestThis ( this string var )
{
   return A(var);
}

然后以这种方式测试它们

namespace test.NUnit
{
    [TestFixture]
    public class myFirstTest
    {
        [Test]
        public void TestOnA() {
            Assert.... // with ATest and ATestThis
        }
    }
}

但是我得到了这两个错误

Type 'Program' already defines a member called A with the same parameter types
The call is ambiguous between the following methods or properties

你有什么想法吗?

1 个答案:

答案 0 :(得分:0)

  

CS0111类型'程序'已经定义了一个名为' A'使用相同的参数类型

此错误告诉您编译器可以区分以下两种方法。

static int A ( string var )
static int A ( this string var )

您可以通过更改其中一个方法的名称或参数或将其中一个方法移动到另一个类来解决此问题。

  

CS0121以下方法或属性之间的呼叫不明确:' Program.A(string)'和' Program.A(字符串)'

这个例外只是第一个的后续错误。当你打电话给A(var);时,编译器并不知道你的意思是哪个方法,因为它们具有相同的名称和相同的参数。