mirror of
https://github.com/m-lamonaca/dev-notes.git
synced 2025-04-07 19:36:40 +00:00
66 lines
1.7 KiB
Markdown
66 lines
1.7 KiB
Markdown
# Unit Testing
|
|
|
|
## MSTest
|
|
|
|
[Microsoft Unit Testing Tutorial](https://docs.microsoft.com/en-us/visualstudio/test/walkthrough-creating-and-running-unit-tests-for-managed-code?view=vs-2019)
|
|
|
|
To test a project add a **MSTest Test Projet** to the solution.
|
|
|
|
The test runner will execute any methods marked with `[TestInitialize]` once for every test the class contains, and will do so before running the actual test method itself.
|
|
The `[TestMethod]` attribute tells the test runner which methods represent tests.
|
|
|
|
In `TestClass.cs`:
|
|
|
|
```cs
|
|
using System;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
|
|
namespace Project.Tests
|
|
{
|
|
[TestClass]
|
|
public class TestClass
|
|
{
|
|
[TestMethod]
|
|
public void TestMethod()
|
|
{
|
|
Assert.AreEqual(expected, actual);
|
|
Assert.IsTrue(bool);
|
|
Assert.IsFalse(bool);
|
|
Assert.IsNotNull(nullable);
|
|
|
|
// assertions on collections
|
|
CollectionAssert.AreEqual(expexcted, actual),
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
[UnitTest Overloaded Methods](https://stackoverflow.com/a/5666591/8319610)
|
|
[Naming standards for unit tests](https://osherove.com/blog/2005/4/3/naming-standards-for-unit-tests.html)
|
|
|
|
## xUnit
|
|
|
|
```cs
|
|
using System;
|
|
using Xunit;
|
|
|
|
namespace Project.Tests
|
|
{
|
|
public class ClassTest
|
|
{
|
|
[Fact]
|
|
public void TestMethod()
|
|
{
|
|
Assert.Equal(expected, actual); // works on collections
|
|
Assert.True(bool);
|
|
Assert.False(bool);
|
|
Assert.NotNull(nullable);
|
|
|
|
// Verifies that all items in the collection pass when executed against action
|
|
Assert.All<T>(IEnumerable<T> collection, Action<T> action);
|
|
}
|
|
}
|
|
}
|
|
```
|