Microsoft UnitTest 一些粗略的知识
测试中的Attribute
Life Cycle 生命周期
ClassInitialize | ClassCleanup
TestInitialize | TestCleanup
数据驱动测试的一些例子 Data Driven Test Attributes
//--------------------------------------------------------
// DataRow Attribute
//--------------------------------------------------------
[DataRow(0, 0)] [DataRow(1, 1)] [DataRow(2, 1)] [DataRow(80, 23416728348467685)] [DataTestMethod] public void GivenDataFibonacciReturnsResultsOk(int number, int result) { var fib = new Fib(); var actual = fib.Fibonacci(number); Assert.AreEqual(result, actual); }
//--------------------------------------------------------
// 使用CSV作为数据的输入
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "TestsData.csv", "TestsData#csv", DataAccessMethod.Sequential)] [TestMethod] public void DataDrivenTest() { int valueA = Convert.ToInt32(this.TestContext.DataRow["valueA"]); int valueB = Convert.ToInt32(this.TestContext.DataRow["valueB"]); int expected = Convert.ToInt32(this.TestContext.DataRow["expectedResult"]); }
//--------------------------------------------------------
// 动态提供数据
[DataTestMethod] [DynamicData(nameof(GetData), DynamicDataSourceType.Method)] public void TestAddDynamicDataMethod(int a, int b, int expected) { var actual = _calculator.Add(a, b); Assert.AreEqual(expected, actual); } public static IEnumerable<object[]> GetData() { yield return new object[] { 1, 1, 2 }; yield return new object[] { 12, 30, 42 }; yield return new object[] { 14, 1, 15 }; }
断言的一些代码例子 Assertions
Assert.AreEqual(28, _actualFuel); // Tests whether the specified values are equal. Assert.AreNotEqual(28, _actualFuel); // Tests whether the specified values are unequal. Same as AreEqual for numeric values. Assert.AreSame(_expectedRocket, _actualRocket); // Tests whether the specified objects both refer to the same object Assert.AreNotSame(_expectedRocket, _actualRocket); // Tests whether the specified objects refer to different objects Assert.IsTrue(_isThereEnoughFuel); // Tests whether the specified condition is true Assert.IsFalse(_isThereEnoughFuel); // Tests whether the specified condition is false Assert.IsNull(_actualRocket); // Tests whether the specified object is null Assert.IsNotNull(_actualRocket); // Tests whether the specified object is non-null Assert.IsInstanceOfType(_actualRocket, typeof(Falcon9Rocket)); // Tests whether the specified object is an instance of the expected type Assert.IsNotInstanceOfType(_actualRocket, typeof(Falcon9Rocket)); // Tests whether the specified object is not an instance of type
StringAssert.Contains(_expectedBellatrixTitle, "Bellatrix"); // Tests whether the specified string contains the specified substring StringAssert.StartsWith(_expectedBellatrixTitle, "Bellatrix"); // Tests whether the specified string begins with the specified substring StringAssert.Matches("(281)388-0388", @"(?d{3})?-? *d{3}-? *-?d{4}"); // Tests whether the specified string matches a regular expression StringAssert.DoesNotMatch("281)388-0388", @"(?d{3})?-? *d{3}-? *-?d{4}"); // Tests whether the specified string does not match a regular expression
CollectionAssert.AreEqual(_expectedRockets, _actualRockets); // Tests whether the specified collections have the same elements in the same order and quantity. CollectionAssert.AreNotEqual(_expectedRockets, _actualRockets); // Tests whether the specified collections does not have the same elements or the elements are in a different order and quantity. CollectionAssert.AreEquivalent(_expectedRockets, _actualRockets); // Tests whether two collections contain the same elements. CollectionAssert.AreNotEquivalent(_expectedRockets, _actualRockets); // Tests whether two collections contain different elements. CollectionAssert.AllItemsAreInstancesOfType(_expectedRockets, _actualRockets); // Tests whether all elements in the specified collection are instances of the expected type CollectionAssert.AllItemsAreNotNull(_expectedRockets); // Tests whether all items in the specified collection are non-null CollectionAssert.AllItemsAreUnique(_expectedRockets); // Tests whether all items in the specified collection are unique CollectionAssert.Contains(_actualRockets, falcon9); // Tests whether the specified collection contains the specified element CollectionAssert.DoesNotContain(_actualRockets, falcon9); // Tests whether the specified collection does not contain the specified element CollectionAssert.IsSubsetOf(_expectedRockets, _actualRockets); // Tests whether one collection is a subset of another collection CollectionAssert.IsNotSubsetOf(_expectedRockets, _actualRockets); // Tests whether one collection is not a subset of another collection
Assert.ThrowsException<ArgumentNullException>(() => new Regex(null)); // Tests whether the code specified by delegate throws exact given exception of type T
参考:
https://www.meziantou.net/mstest-v2-test-lifecycle-attributes.htm
https://www.automatetheplanet.com/mstest-cheat-sheet/