gpt4 book ai didi

c# - 是否可以对该方法进行单元测试?

转载 作者:太空宇宙 更新时间:2023-11-03 19:33:38 26 4
gpt4 key购买 nike

我尝试为以下方法编写单元测试:

using StaticClass;           // writen by some one else, have a dll

namespace Test
{
Class TestClass
{
public void DoSomething(string param1)
{
List<string> = StaticClass.GetList(param1)

// sort the list and do other studd here
}
}
}

当我不确定如何为 DoSomething 方法编写测试时,这取决于另一个类中的静态方法。该方法的输出取决于该机器上的数据库、环境和其他一些因素。所以如果两台机器上的数据库不同,同样的方法会得到不同的结果。我所知道的是 GetList 返回一些值,并且该方法可能已经或可能没有被该类的创建者进行单元测试。

如何测试这样的方法?是否可以这样说,每当调用 StaticClass.Getlist 方法时返回自定义 List<String>我在我的程序中创建的?我正在用 C# 编写测试。

谢谢,

最佳答案

具有副作用的方法的静态类型很麻烦。

你有两个选择:

  • 短期:编写一个接口(interface),该接口(interface)具有带有正确签名的 GetList 方法。接下来编写一个适配器 - 一个实现此接口(interface)并在内部委托(delegate)给 StaticClass 的类。将此适配器类型的实例作为构造函数参数或方法参数传递到您的类中。在其上调用 GetList。您现在可以使用模拟框架来创建模拟对象并将其传递到您的测试中,并将其设置为返回固定值。
  • 长期:将 StaticClass 转换为非静态类。传入它(而不是适配器对象);但这需要访问 StaticClass 的源代码。

关于c# - 是否可以对该方法进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3427154/

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