【发布时间】:2019-11-17 07:52:19
【问题描述】:
我有这个 void 方法,我想对其进行单元测试,但不幸的是,我在这方面没有太多经验。
public void findOccuranceMethod()
{
string str = "The Haunting of Hill House!";
Console.WriteLine("String: " + str);
string occurString = "o";
string replaceString = "MDDS";
var array = str.Split(new[] { occurString }, StringSplitOptions.None);
var count = array.Length - 1;
string result = string.Join(replaceString, array);
Console.WriteLine("String after replacing a character: " + result);
Console.WriteLine("Number of replaces made: " + count);
Console.ReadLine();
}
这是我尝试测试的 TestClass,但在我运行它时它一直在加载:
[TestMethod()]
public void findOccuranceMethodTest()
{
// Arrange
string expected = "The Haunting MDDSf Hill HMDDSuse!";
// Act
var result = new findOccurance();
// Assert
Assert.AreEqual(expected, result);
}
【问题讨论】:
-
这段代码本身没有多大意义,也不能按原样编译。您能否添加足够的内容以使其实际编译并演示您所看到的行为?
-
如果目标有依赖关系,你可以断言预期的行为
-
你想用这个方法测试什么?这里没有真正的逻辑 - 只是一一执行语句。没有输入,没有输出......我根本不会费心测试这个。
-
我同意 Zolar,这里没有太多要测试的,因为你的方法没有做太多,只是写 sometjng 到控制台,你不能真正测试,因为它是一个静态依赖。除此之外,即使是 void 方法也会产生某种结果 - 例如它创建的文件或它设置的属性 - 您可以对其进行测试。
-
@BMX:不,这不是您想要测试的,因为如果是这样,您也会尝试查找“替换字符后的字符串:”。不,您要测试的是您的 string-replace 是否按预期进行 - 因为如果确实如此,那么您已经知道输出是正确的。因此,取出字符串替换代码并使其成为自己的函数,理想情况下将相关字符串作为参数,并返回完成所有替换的字符串。该函数对于单元测试来说是微不足道的,您甚至不需要更改现有函数的签名。
标签: c# .net unit-testing methods void