我有一个CodedUI测试套件,作为MSTest Unit测试运行。我在AssemblyCleanup中有一个方法,它将通过电子邮件发送存储在外部数据库中的测试运行结果。如何以编程方式确定在上次运行会话期间执行了多少单元测试?如果我们执行的测试少于10次,我不想发送电子邮件。这样我们只能在运行整个CodedUI套件时收到电子邮件,而不是在我们调试测试时。我们目前有一个SendEmail标志,必须手动设置,但我希望这是以编程方式确定的。
答案 0 :(得分:4)
使用基本测试类,该类具有保存已执行测试数的属性。所有其他测试类都继承它,并在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; }
}
注意:可以在CodedUITests上使用相同的代码