【发布时间】:2016-12-01 00:03:34
【问题描述】:
这是一种涉及 StackOverflow 和 SuperUser 之间灰色地带的问题。由于我怀疑答案可能涉及与代码相关的解决方案,例如创造性地使用StopWatch,所以我会在这里问它。
我正在使用 Visual Studio 2013 对依赖于实体框架数据模型的控制器执行单元测试。测试资源管理器在一个简短的列表中很好地展示了我的测试结果以及它们经过的时间。
不过,我发现我的 Controller 单元测试花费的时间比我预期的要长得多。我开始怀疑这是由于我用来创建模拟(使用 Moq,但这无关紧要)实体模型的初始化代码。
果然,显示初始化例程包含在经过的时间中是一件小事。
[TestClass]
public class InitializeTest
{
[TestInitialize]
public void Initialize()
{
Thread.Sleep(10000);
}
[TestMethod]
public void TestInitializeRuntime()
{
Assert.Inconclusive();
}
}
这在测试资源管理器中产生了以下输出:
这使得由我的模拟实体模型支持的测试的运行时间相当无用,因为初始化代码通常会消耗超过 95% 的测试运行时间。每种方法看起来都很慢,但实际上并非如此。
是否有替代配置或一些创造性的代码使用(如StopWatch,如前所述),允许我只报告测试方法的运行时间,不包括初始化或清理测试所花费的时间?
【问题讨论】:
-
我没有回答这个问题,但您可能值得您看看 RedGate 的 ANTS Performance Profiler:documentation.red-gate.com/display/APP9/…
-
@Arovol,我不同意。该问题明确涉及旧版本的 Visual Studio。这个问题专门处理当前的主要版本。从那时起,IDE 和测试框架都在不断发展,因此答案可能已过时且不正确。
标签: c# unit-testing visual-studio-2013