一, 在C#中进行测试通常涉及使用测试框架,如NUnit、xUnit或MSTest。
通过创建和运行单元测试,检查代码是否按预期工作。 因为可将程序的功能分为可作为单个单元测试的独立可测试行为,所以它叫做单元测试。
代码:
public class Calculator
{
public int Add(int a, int b)
{
return a + b;
}
}
引入NUnit框架:
using NUnit.Framework;
TestFixture\] // **定义测试类**
public class CalculatorTests
{
private Calculator calculator; //**声明被测对象**
\[SetUp\] // **设置测试环境**
public void SetUp()
{
calculator = new Calculator();
}
\[Test\] **编写测试方法** 特性标记了一个测试方法
public void ReturnsSum()
{
int result = calculator.Add(2, 3);
Assert.AreEqual(5, result);
**// Assert**:这是 NUnit 测试框架中的一个类,提供了一系列用于验证测试结果的方法。
**// AreEqual** :这是 `Assert` 类中的一个方法,用于比较两个值是否相等。
}
}
Assert.lsTrue 判断是否为真
Assert.lsFalse 判断是否为假
Assert.AreEqual 判断是否相等
|--------------------------|-------------------------|-----------------------------------------------------------------------------|
| \[TestClass\] | \[TestFixture\] | 定义一个测试类,里面可以包含很多测试函数和初始化、销毁函数。 |
| \[TestMethod\] | \[Test\] | 定义一个独立的测试函数。 |
| \[ClassInitialize\] | \[TestFixtureSetUp\] | 定义一个测试类初始化函数,每当运行测试类中的一个或多个测试函数时,这个函数将会在测试函数被调用前被调用一次(在第一个测试函数运行前会被调用)。 |
| \[ClassCleanup\] | \[TestFixtureTearDown\] | 定义一个测试类销毁函数,每当测试类中的选中的测试函数全部运行结束后运行(在最后一个测试函数运行结束后运行)。 |
| \[TestInitialize\] | \[SetUp\] | 定义测试函数初始化函数,每个测试函数运行前都会被调用一次。 |
| \[TestCleanup\] | \[TearDown\] | 定义测试函数销毁函数,每个测试函数执行完后都会被调用一次。 |
| \[AssemblyInitialize\] | -- | 定义测试Assembly初始化函数,每当这个Assembly中的有测试函数被运行前,会被调用一次(在Assembly中第一个测试函数运行前会被调用)。 |
| \[AssemblyCleanup\] | -- | 定义测试Assembly销毁函数,当Assembly中所有测试函数运行结束后,运行一次。(在Assembly中所有测试函数运行结束后被调用) |
| \[DescriptionAttribute\] | \[Category\] | 定义标识分组。 |
二, 在xUnit测试框架中
`[Theory]` 属性用于标记一个测试方法,该方法将使用多个数据集运行多次。
`[Fact]` 标记的测试方法只运行一次。
而 `[Theory]` 允许您为测试方法提供多个输入值,从而可以验证该方法在不同输入下的行为。
var client = factory.CreateClient();
使用`factory`(通常是一个`WebAppFactory