在.NET中的UI测试自动化框架中实现Screenplay Pattern / Actor Model

时间:2017-09-25 10:01:56

标签: c# .net selenium

我很好奇.NET中测试自动化框架中的剧本模式/演员模型的实现。

我预见在测试自动化中使用此模式的好处是:

  • 将业务领域与测试逻辑分开(BDD驱动)
  • 商业可读(演员表演和观察)
  • 报告(Given / Then)
  • 中不一定需要任务(操作组)
  • 测试更具弹性,因为设置/拆卸任务处理得更好
  • 底层自动化应该能够在任何地方执行(Web / UI / API) - 不可知

研究:

这是通过Java BDD自动化框架Serenity BDD(以前称为Thucydides)实现的

可能的.NET实现可能包括使用以下技术:

  • NUnit的/ MSTest的/的xUnit
  • SpecFlow /小黄瓜
  • Akka.Net

我的问题是:为了这个目的,有没有人在.NET框架中实现这个?

1 个答案:

答案 0 :(得分:2)

您可以签出以下库:CSF.Screenplay

这是一个受Serenity启发的库,它是一个测试框架,其中包括Screenplay模式的Java实现。

在.NET中使用此库的首选集成是SpecFlow。但这是一个使用NUnit的示例,因为它更简洁,更广为人知。

[TestFixture]
[Description("Users should be able to buy groceries via the web application")]
public class UsersCanBuyGroceries
{
    [Test,Screenplay]
    [Description("Joe should see a thankyou message when he uses the web application to buy eggs.")]
    public void JoeShouldSeeAThankyouMessageWhenHeBuysEggs(ICast cast, BrowseTheWeb browseTheWeb)
    {
        var joe = cast.Get("Joe")
        joe.IsAbleTo(browseTheWeb);
        Given(joe).WasAbleTo(SearchTheShop.ForGroceries());
        When(joe).AttemptsTo(Click.On(GroceriesForSale.BuyEggsButton));
        var message = Then(joe).ShouldSee(TheText.Of(GroceriesForSale.FeedbackMessage));

        Assert.That(message, Is.EqualTo("Thankyou for buying eggs."));
    }
}