我如何用程序确定已经执行了多少单元测试

本文关键字:执行 多少 单元测试 何用 程序 | 更新日期: 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 上使用