gpt4 book ai didi

c# - 为具有 protected 对象 C# 的代码编写单元测试的好方法是什么(使用 NMock 和 NUnit 框架)

转载 作者:行者123 更新时间:2023-11-30 12:54:09 25 4
gpt4 key购买 nike

为包含其他对象的单个类编写单元测试时,最好的使用方法是什么

模拟对象以避免依赖于其他类的测试。

示例 1:

public class MyClass
{
protected MyObject _obj;

public MyClass()
{
_obj = new MyObject();
}

public object DoSomething()
{
//some work
_obj.MethodCall();
//more work;
return result;
}
}

我宁愿不公开 protected 值来为代码创建单元测试。包装类将

为测试而工作,但有更好的方法吗?

示例 2:

public class MyClass
{

public object DoSomething()
{

//some work
MyObject obj = new obj(parameters);
_obj.MethodCall(Method1);
//more work;
return result;
}

public int Method1()
{ ... }

}

与上面的示例类似,但 ojbect 是在我调用的方法中创建的。

示例 3:

public class MyClass
{

public object DoSomething()
{

//some work
obj.MethodCall(Method1);
//more work;
return result;
}

public int MethodA()
{ ... }

}

当 MethodA 仅用作委托(delegate)时,有没有办法测试它?

最佳答案

我建议您看一下依赖注入(inject)。一件事是使用模拟对象,但除非你使用像 TypeMock 这样的东西,它基本上可以让你即时修改代码,否则你希望有一种方法来注入(inject)你的类所依赖的实例,如果你想摆脱依赖项。因此,在示例 1 中,我建议不要在构造函数中新建 MyObject 的实例,而是让调用者提供该实例。在那种情况下,您可以轻松地用模拟甚至 stub 替换它。

关于c# - 为具有 protected 对象 C# 的代码编写单元测试的好方法是什么(使用 NMock 和 NUnit 框架),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/306996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com