我有一个测试,用于验证方法的集合输出。这个测试的变体通过了:
[TestMethod, TestCategory("BVT")]
public void TheStatusesAreReturned()
{
var expectedUnprocessedStatuses = new List<FileUploadStatus>
{
FileUploadStatus.InProcess,
FileUploadStatus.Pending,
};
Sut.GetUnprocessedStatuses()
.Should()
.BeEquivalentTo(expectedUnprocessedStatuses);
}
这个测试变体失败了,报错信息是"期望的item[0]应该是InProcess状态,但实际上是Pending状态":
[TestMethod, TestCategory("BVT")]
public void TheStatusesAreReturned2()
{
var expectedUnprocessedStatuses = new List<FileUploadStatus>
{
FileUploadStatus.InProcess,
FileUploadStatus.Pending,
};
Sut.GetUnprocessedStatuses()
.ShouldBeEquivalentTo(expectedUnprocessedStatuses);
}
明显地,ShouldBeEquivalentTo
关注集合项目的顺序,而 BeEquivalentTo
则不关注。为什么这2种方法之间的等价性概念不同呢?
ShouldBeEquivalentTo
自v2.1版本起将会忽略集合中项目的顺序。 - Dennis Doomen