我如何用程序确定已经执行了多少单元测试
本文关键字:执行 多少 单元测试 何用 程序 | 更新日期: 2023-09-27 17:57:59
我有一个CodedUI测试套件,它作为MSTest单元测试运行。我在AssemblyCleanup中有一个方法,它将通过电子邮件发送存储在外部数据库中的测试运行结果。如何通过编程确定在上次运行会话期间执行了多少单元测试?如果我们执行的测试少于10次,我不想发送电子邮件。这样,我们只有在运行整个CodedUI套件时才会收到电子邮件,而不是在调试测试时。我们目前有一个SendEmail标志,必须手动设置,但我希望这是通过编程确定的。
使用一个基本测试类,该类具有保持已执行测试数量的属性。所有其他测试类都继承它,并在TestInitialize
上递增该属性。
运行以下代码并查看测试输出的结果。
[TestClass]
public class BaseTestClass
{
private static int _executedTests;
private static int _passedTests;
[AssemblyCleanup()]
public static void AssemblyCleanup()
{
Console.WriteLine("Total tests executed: {0}", _executedTests );
Console.WriteLine("Total passed tests: {0}", _passedTests);
}
protected void IncrementTests()
{
_executedTests++;
}
protected void IncrementPassedTests()
{
_passedTests++;
}
}
[TestClass]
public class TestClass : BaseTestClass
{
[TestInitialize]
public void TestInitialize()
{
IncrementTests();
}
[TestCleanup]
public void TestCleanup()
{
if (TestContext.CurrentTestOutcome == UnitTestOutcome.Passed)
{
IncrementPassedTests();
}
}
[TestMethod]
public void TestMethod1()
{
}
[TestMethod]
public void TestMethod2()
{
Assert.Fail();
}
public TestContext TestContext { get; set; }
}
注意:相同的代码可以在CodedUITest 上使用