我正在阅读两个文件中的内容,现在我想用我期望的字符串测试该内容。
string read1 = File.ReadAllText("@C:\somefile.txt");
string read2 = File.ReadAllText("@C:\somefilee.txt");
string expectedString = "blah";
Assert.AreEqual(read1 and read2 equals expected );
我知道这是基本的,但我有点被困在这里。
答案 0 :(得分: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");
但在这种情况下,如果测试失败,你将无法知道问题是什么。
答案 1 :(得分:2)
我更喜欢使用普通的C#编写这样的断言,你可以使用ExpressionToCode(nuget package)。有了这个,你的断言看起来如下:
PAssert.That(
() => read1 == expectedString && read2 == expectedString
, "optional failure message");
如果失败,库将在其输出中包含该表达式,并包含您使用的各种变量(read1,read2和expectedString)的实际值。
例如,您可能会遇到如下错误:
optional failure message read1 == expectedString && read2 == expectedString | | | | | | | | | | | | | "blah" | | | | | false | | | | "Blah" | | | false | | "blah" | true "blah"
免责声明:我写过ExpressionToCode。
答案 2 :(得分:1)
Assert(read1 == read2 && read1 == expectedString, "Not all equal")
答案 3 :(得分:-1)
如果我说得对,你想要这个:
try{
if(Assert.AreEqual(read1,read2,false)){
//do things
}
catch(AssertFailedException ex){
//assert failed
}
查看here以获取MSDN。