【问题标题】:Assert.AreEqual failed. Expected:<‭8‬>. Actual:<8> when ran my Coded UI test methodAssert.AreEqual 失败。预期:<8>。实际:<8> 运行我的 Coded UI 测试方法时
【发布时间】:2017-08-18 14:23:06
【问题描述】:

在我的 codedui 测试方法中,我将输出值与我的 csv 文件进行比较。基本上我正在使用计算器应用程序并选择程序员模式选项。单击一个按钮(此处单击按钮 8)并将输出为十进制、十六进制、二进制和八进制值与我的结果(即来自我的 csv 文件)进行比较。在比较结果时,我使用了Assert.AreEqual() 方法。 下面是我的代码sn-p:

try
{
    Assert.AreEqual(TestContext.DataRow["Binary"].ToString().Split(' ')[1].Trim(), control.ToString().Split(' ')[1].Trim(), "Binary value matches with expected.");
}
catch (AssertFailedException err)
{
    Console.WriteLine(err.Message);
}

但是,当我运行测试方法时,我的测试通过并显示以下消息:

Assert.AreEqual 失败。预期:。实际:.

我不确定 Asser.AreEqual 为什么会失败。

【问题讨论】:

  • 这两个值中是否有任何非打印字符?在断言行上设置断点,调试测试并检查两个值...
  • 感谢Johan,我放了一个断点,发现Assert.AreEqual只执行Object验证。推荐msdn.microsoft.com/en-us/library/ms243486.aspx 并帮助我解决我面临的问题。

标签: c# csv coded-ui-tests


【解决方案1】:

通过将我的 Assert.AreEqual(expected,actual, string) (其中预期值和实际值是字符串)更改为 Assert.AreEqual(string,string,boolean,string) 重载列表来解决此问题,该重载列表验证两个指定的字符串是否相等,忽略大小写或不指定。如果它们不相等,则断言失败。如果断言失败,则显示一条消息。

我将代码更改为如下:

try
{
    Assert.AreEqual(TestContext.DataRow["Binary"].ToString().Split(' ')[1].Trim(), control.ToString().Split(' ')[1].Trim(),true, "Actual Binary value does not match with expected.");
}
catch (AssertFailedException err)
{
    Console.WriteLine(err.Message);
}

当我运行我的测试方法时,它可以工作。我在下面提到了 msdn 站点以进行进一步说明: Assert.AreEqual MethodAssert.AreEqual Method (String, String, Boolean, String)

【讨论】:

  • 只是为了让答案更明显。您介意先调用使用Assert.AreEqual 的忽略大小写选项进行字符串比较吗?
猜你喜欢
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-12
  • 1970-01-01
相关资源
最近更新 更多