1

我正在从两个文件中读取内容,现在我想用我预期的字符串测试该内容。

string read1 = File.ReadAllText("@C:\somefile.txt");
string read2 = File.ReadAllText("@C:\somefilee.txt");

string expectedString = "blah";

Assert.AreEqual(read1 and read2 equals expected );

我知道这是基本的,但我有点卡在这里。

4

4 回答 4

4

您需要使用 2 个断言,首先将预期字符串与第一个文件内容进行比较,然后将第二个文件内容与第一个文件内容(或再次与预期字符串)进行比较,例如:

Assert.AreEqual(expectedString, read1, "File content should be equal to expected string");
Assert.AreEqual(read1, read2, "Files content should be identical");

或者你可以使用条件

Assert.IsTrue(read1 == read2 == expectedString, "Files content should be equal to expected string");

但是在这种情况下,如果测试失败,您将不知道问题出在哪里。

于 2013-03-12T09:36:32.183 回答
2

我更喜欢使用纯 C# 来编写这样的断言,你可以使用ExpressionToCode ( nuget package )。这样,您的断言将如下所示:

PAssert.That(
    () => read1 == expectedString && read2 == expectedString
    , "optional failure message");

失败时,库将在其输出中包含该表达式,并包含您使用的各种变量(read1、read2 和 expectedString)的实际值。

例如,您可能会遇到如下所示的失败:

可选的失败消息
读取 1 == 预期字符串 && 读取 2 == 预期字符串
  | | | | | | |
  | | | | | | “废话”
  | | | | | 错误的
  | | | | “废话”
  | | | 错误的
  | | “废话”
  | 真的
  “废话”

免责声明:我写了 ExpressionToCode。

于 2013-03-12T09:36:24.753 回答
1

Assert(read1 == read2 && read1 == expectedString, "Not all equal")

于 2013-03-12T09:37:47.640 回答
-1

如果我说对了,你想要这个:

try{
if(Assert.AreEqual(read1,read2,false)){
//do things
}
catch(AssertFailedException ex){
//assert failed
}

在此处查找MSDN。

于 2013-03-12T09:36:41.087 回答