考虑下面需要测试的类,
class ToBeTested
{
Employee _e;
public ToBeTested(Employee e)
{
_e = e;
}
void Process()
{
// Do something with _e
}
}
[TestClass]
class ToBeTestedTest
{
[TestMethod]
public void TestProcessMethod()
{
Employee e = // Initialise it with some test value..
ToBeTested tbt = new ToBeTested(e);
tbt.Process();
//Assert to Verify the test results...
}
问题是Employee
实际上可以是一个非常复杂的类型,其中包含属性,它们本身可以是更多类的对象。使用模拟值初始化Employee并生成可测试对象变得很困难。
调试时我可以设置断点并查看Employee
中包含的ToBeTested
对象。有没有办法可以在运行时获取此对象中的所有值,并在我的测试方法中使用它?
答案 0 :(得分:7)
您可以使用 Object Exporter 。它是Visual Studio的扩展,它将从调试窗口中的任何对象生成C#初始化代码。您可以在单元测试初始化中使用此生成的代码。
答案 1 :(得分:1)
提到的Visual Studio扩展(OmarElabd / ObjectExporter)是个好主意,但我需要在运行单元测试期间在运行时从内存中对象生成C#代码。这是从原始问题https://www.nuget.org/packages/ObjectDumper.NET/
演变而来的ObjectDumper.Dump(obj,DumpStyle.CSharp);从变量返回C#初始化代码。如果发现问题,请告诉我,您可能想在github上报告它们。