如果一个断言或其他断言是真的,如何比较

时间:2018-05-23 11:38:56

标签: c# assert

我有一个英语和西班牙语的APP。我使用英语自动化了一些流程,因此断言是英文的。现在,我想用西班牙语自动化它,所以我唯一需要做的就是用西班牙语添加断言。

如何添加西班牙语断言并检查IF一个或其他=真那么好,以便能够轻松地重用我拥有的所有代码?

这是我如何使用断言:

if (_app.Query(x => x.Class("SystemWebView").Css("BUTTON#button_home_back")).Length > 0)
{
    _app.WaitForElement(e => e.Css("BUTTON#button_home_back"), "Timeout waiting for the Home screen", new TimeSpan(0, 1, 0), null, null);

    Assert.AreEqual(_app.Query(e => e.Css("ion-title"))[0].TextContent, "englishString");                                        
     _app.Tap(x => x.Class("SystemWebView").Css("BUTTON#button_home_back"));
}

_app.Screenshot("englishString");
break;

2 个答案:

答案 0 :(得分:3)

如果我这样做,我会使用字典和枚举。像这样的东西

enum Lang { English, Spanish }

Lang CurrentLang = Lang.English;

Dictionary<Lang, string> Asserts = new Dictionary<Lang, string>{
    {Lang.English, "englishString"},
    {Lang.Spanish, "spanishString"}
};

然后

Assert.AreEqual(_app.Query(e => e.Css("ion-title"))[0].TextContent, Asserts[CurrentLang]); 

答案 1 :(得分:2)

您可以创建一个基于语言返回正确字符串的方法。

Assert.AreEqual(_app.Query(e => e.Css("ion-title"))[0].TextContent, 
    GetTitleInCurrentLanguage()); 

当你执行此断言时,你必须已经知道应用程序正在运行的语言,所以你绝对应该针对该语言的确切字符串进行断言,而不是a || b方式,因为你想要当应用程序应该是英文时,如果有西班牙语标题,则断言失败。

实现返回本地化资源的方法的方式完全取决于应用程序中构建本地化的方式。在测试的情况下,您可能希望在测试中对字符串进行硬编码,以确保您不依赖于本地化基础架构才能正常运行。或者,您可以单独运行测试以确保此基础结构正常运行。