我正在从两个文件中读取内容,现在我想用我预期的字符串测试该内容。
string read1 = File.ReadAllText("@C:\somefile.txt");
string read2 = File.ReadAllText("@C:\somefilee.txt");
string expectedString = "blah";
Assert.AreEqual(read1 and read2 equals expected );
我知道这是基本的,但我有点卡在这里。
您需要使用 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");
但是在这种情况下,如果测试失败,您将不知道问题出在哪里。
我更喜欢使用纯 C# 来编写这样的断言,你可以使用ExpressionToCode ( nuget package )。这样,您的断言将如下所示:
PAssert.That(
() => read1 == expectedString && read2 == expectedString
, "optional failure message");
失败时,库将在其输出中包含该表达式,并包含您使用的各种变量(read1、read2 和 expectedString)的实际值。
例如,您可能会遇到如下所示的失败:
可选的失败消息 读取 1 == 预期字符串 && 读取 2 == 预期字符串 | | | | | | | | | | | | | “废话” | | | | | 错误的 | | | | “废话” | | | 错误的 | | “废话” | 真的 “废话”
免责声明:我写了 ExpressionToCode。
Assert(read1 == read2 && read1 == expectedString, "Not all equal")
如果我说对了,你想要这个:
try{
if(Assert.AreEqual(read1,read2,false)){
//do things
}
catch(AssertFailedException ex){
//assert failed
}
在此处查找MSDN。