MSTest和Xunit细节区别
1.多实例参数化测试
Xunit参数不匹配会报错,MSTest不会;
//MSTest
public class Solution103Tests
{
[TestMethod()]
[DataRow(new object[]{ 3, 9, 20, null, null, 15, 7 },2,"2" )]//这里测试参数不匹配无法调试测试,而Xunit参数不匹配会报错
public void ZigzagLevelOrderTest(object[] array)
{
//Arrange
var expected =
new List> {new List() {3}, new List() {20, 9}, new List() {15, 7}};
//Act
var actual = new Solution103().ZigzagLevelOrder(array.CreateTree());
//Assert
for (int i = 0; i < actual.Count; i++)
{
Assert.IsTrue(expected[i].SequenceEqual(actual[i]));
}
Assert.That.SequenceEqual2(expected, actual, "You are wrong!!!");
Assert.AreEqual(expected.Count, expected.Count, "You are wrong!!!");
var typ = expected.GetType();
Assert.IsInstanceOfType(actual, typ);
}
}
2.MSTest是单例模式,Xunit构造函数protect修改
这导致MSTest.That有更好的扩展性;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace LeetCodeTest.CommunityToolKit
{
public static class AssertExtend
{
///
/// list判断内容是否相等
///
///
/// Examples
/// Assert.That.SequenceEqual(list1, list2, "You are wrong!!!");
///
/// Assert.That单例
/// 集合1
/// 集合2
/// 错误信息
public static void SequenceEqual(this Assert assert, IList