问题描述
我想知道解决我遇到的问题的最佳设计是什么
我的应用程序中有一个页面,您可以在其中创建消息。根据用户的不同,有多种方法可以创建消息。
我创建了一个名为 CreateMessagePage 的类。此类包含该页面的所有元素和方法。
- 创建与 A 国的消息
- 代表 B 国创建消息
- 使用假帐户创建消息
- 等
所以我为每种类型创建了一个类,每个类都实现了 CreateMessagePage
CreateMessagePage.cs
| | |
CreateMessage.cs CreateMessageOnBehalfOf.cs CreateMessageFakeAccount.cs
-CreateMessage() -CreateMessage() -CreateMessage()
然后我创建这些类的实例以在我的 spekflow 特征步骤中使用(测试用例类)
例如:
CreateMessage.CreateMessage(string 1,string 2,string 3);
CreateMessageOnBehalfOf.CreateMessage(string 1,string 3,string 4,string 5);
我想合并策略设计模式,但不确定最好的方法是哪些页面对象?我应该合并一个 CreateMessage 接口吗?
只是寻找关于这种情况在测试自动化框架中通常如何处理的意见
解决方法
我会将其添加为注释,但格式将无处不在。您正在使用 specflow,那么为什么不合并它并添加会创建随机假数据的库 Faker.net?
特点:
Given on the page MyPageName I add a message as a |Country A|
Given on the page MyPageName I add a message as a |Country B|
Given on the page MyPageName I add a message as a |Fake Account|
步骤:
using Faker; //add faker.net from nuget
var _randMessage = Faker.Lorem.Sentence(3);
[Given(@"on the page MyPageName I add a message as a \|(.*)\|")]
public void GivenOnThePageMyPageNameIAddAMessageAsACountryA(string value)
{
switch (value.ToLower())
{
case "country a":
Pages.CreateMessageOnBehalfOf(_randMessage);
break;
case "country b":
Pages.CreateMessage(_randMessage);
break;
case "fake account":
Pages.CreateMessageFakeAccount(_randMessage);
break;
}
}