sau*_*aus 5 unit-testing mstest visual-studio-2010
我为我的项目提供了一套单元测试,我使用visual studio test runner运行.我想知道测试运行多长时间.测试运行详细信息屏幕显示运行的开始和结束时间,但仅显示最接近的秒数.我的测试套件目前只需不到一秒的时间就可以完成,所以我不知道我的50套测试是否需要<0.1秒(好!)或最多1秒(不好!).
有没有办法实现这种精度水平?
在根解决方案目录中,测试运行后会有一个名为Test Results的文件夹.如果你查看那里,每次运行都会吐出一个.TRX文件,其中包含测试运行的时间戳作为其名称的一部分.打开此文件,您将看到它是一个XML文件,其中包含一系列有关测试运行的难以阅读的信息.如果您查找XML节点"UnitTestResult",则每个节点都将具有一个名为"duration"的属性.这将告诉您每个测试运行多长时间(假设测试已运行).
我对此有很多经验,因为我编写了一个开源实用程序,它接受这些TRX文件,解析它们,并生成结果的HTML报告.它向您展示的一件事是测试持续时间,对于单个测试,聚合测试类以及整个测试运行.
为了避免这个作为我的工具的插件,我不会发布链接,除非有人好奇.但是,足以说明,您可以从TRX文件获得测试的执行时间,无需调试跟踪或控制台或编辑测试代码.
编辑:精度高得离谱.对于单个单元测试,示例条目是00:00:00.0015890.
让所有测试类继承自进行测量的基本测试类.
在一般情况下,您需要将输出消息传递给更有用的东西(如记录器).
[TestClass]
public abstract class TestClassBase2
{
    protected TestContext testContextInstance;
    public TestContext TestContext
    {
        get { return testContextInstance; }
        set { testContextInstance = value; }
    }
    protected System.Diagnostics.Stopwatch _stopWatch;
    [TestInitialize]
    public void TestInitializeBase()
    {
        _stopWatch = System.Diagnostics.Stopwatch.StartNew();
    }
    [TestCleanup]
    public void TestCleanupBase()
    {
        System.Diagnostics.Debug.WriteLine("Done - Total Test time: {0} ms - {1}",
                                            _stopWatch.ElapsedMilliseconds, TestContext.TestName);
    }
}
[TestClass]
public class TempTests : TestClassBase2
{
    [TestMethod]
    public void TempTest()
    {
        // outputs: 
        // Done - Total Test time: 3 ms - TempTest
    }
}
| 归档时间: | 
 | 
| 查看次数: | 6372 次 | 
| 最近记录: |