【发布时间】:2013-03-24 11:38:14
【问题描述】:
对于一个项目,我需要知道在单元测试结束时调用了多少方法。 (或者类似于 Visual Studio 中的调用层次结构(不是在运行时)。我为此创建了一个测试项目。但我只获取在单元测试项目中调用的方法。
例如,我有一个类库,其中包含以下类(程序集):
public class Program
{
public void A()
{
B();
C();
}
public void B()
{
}
public void C()
{
B();
D();
}
public void D()
{
}
}
以及具有以下测试方法的单元测试(组装)
[TestMethod]
public void TestMethod1()
{
StackTrace stackTrace = new StackTrace();
new Program().A();
int count = stackTrace.FrameCount;
}
[TestMethod]
public void TestMethod2()
{
StackTrace stackTrace = new StackTrace();
new Program().C();
int count = stackTrace.FrameCount;
}
在两个单元测试中计数 = 12。当我检查 stackTrace 变量的属性时,我只看到单元测试程序集调用的方法。有没有办法将类库程序集的调用包含在 stackTrace 中?
提前致谢
【问题讨论】:
-
构造堆栈跟踪对象将获取构造它的代码的堆栈跟踪,它不会收集它后面的代码的堆栈跟踪。这意味着在您的测试方法中,您会在每个测试方法的第一行获得构建堆栈跟踪对象的堆栈跟踪,该方法的其余部分对此堆栈跟踪没有影响。
-
但是当我将 StackTrace 的构建放到 testmethod 的末尾时,结果仍然是一样的......
-
是的...,因为它仍然只计算对您在中的方法的调用。
标签: c# stack-trace