我正在尝试通过添加一些 Selenium 功能来扩展 xUnit 断言方法

namespace MyProject.Web.Specs.PageLibrary.Extensions
{
    public static class AssertExtensions
    {
        public static void ElementPresent(this Assert assert, ...)
        {
            if (...)
            {
                throw new AssertException(...);
            }
        }
    }
}

但是当我尝试使用它时出现这个编译错误。
using MyProject.Web.Specs.PageLibrary.Extensions;
using Xunit;
...

public void DoSomething()
{
    Assert.ElementPresent(...);
}

和错误
Error   5   'Xunit.Assert' does not contain a definition for 'ElementPresent'

有谁知道这是否可能或我哪里出错了?

最佳答案

您需要将作为此参数传递给扩展方法的对象实例。
在您的情况下,这将是正确的语法

var assert = new Assert();
assert.ElementPresent(...);

但我想你不需要甚至不能创建 Assert 类的实例。

您要做的是将扩展方法调用为扩展类上的静态调用,但这是行不通的。
但为什么不简单地打电话
 AssertExtensions.ElementPresent(...);

关于c# - 使用新断言扩展 XUnit Assert 类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16194952/

10-13 06:17