c# - 复杂对象的单元测试 C#
问题描述
我写了一个简短的应用程序,但是我遇到了编写单元测试方法MaximumRowSum_DefectiveLines 的问题。请告诉我应该如何行动,我的测试课
public class OutputtingStrings
{
public class MaxSumLineResult
{
public int MaxSumLineIndex { get; set; }
public List<string> DefectiveLines { get; set; }
public override string ToString()
{
return $"Line number with maximum sum of elements: { MaxSumLineIndex + 1}"; /* + "\n" +
$"Defective lines:{string.Join("\n", DefectiveLines)}";*/
}
}
public static bool IsValidateFileExist(string filePath)
{
if (File.Exists(filePath))
{
return true;
}
else
{
return false;
}
}
public MaxSumLineResult MaximumRowSum_DefectiveLines(string[] fileData)
{
List<string> defectiveLines = new List<string>();
int lineNumber = 0;
var indexOfLines = new Dictionary<int, double>();
foreach (var line in fileData)
{
NumberStyles style = NumberStyles.Number;
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-GB");
var stringElements = line.Split(",", StringSplitOptions.RemoveEmptyEntries);
if (stringElements.Any(n => double.TryParse(n, style, culture, out var number)))
{
indexOfLines.Add(lineNumber, stringElements.Sum(n =>
{
return double.Parse(n, style, culture);
}));
}
else
{
defectiveLines.Add(line);
}
lineNumber++;
}
var maxSumLineIndex = indexOfLines.FirstOrDefault(x =>
x.Value == indexOfLines.Values.Max()).Key;
var resultLines = new MaxSumLineResult
{
MaxSumLineIndex = maxSumLineIndex,
DefectiveLines = defectiveLines
};
return resultLines;
}
}
我的单元测试课:
[TestClass]
public class UnitTestOutputtingStrings
{
[TestMethod]
public void Should_FindingMaximumRowSum_TheFileIsValidAndReadable()
{
/* Arrange*/
var maxsumlineresult = new MaxSumLineResult();
var sut = new OutputtingStrings();
/* Act*/
/* Assert*/
}
}
我已经阅读了“单元测试的艺术。带有 C# 中的示例”一书。我了解这些原则,但我不知道如何处理复杂的类。提前谢谢你们,我会很高兴每一个答案或链接到带有单元测试材料的来源。
解决方案
当然,在方法上,责任太大了。我认为开始的好主意是将方法分成多个更小的方法。之后,对该方法的单元测试将更容易完成。
推荐阅读
- excel - 在VBA中用字母和数字格式化多个单元格
- java - Java中的字符串实习
- angular - Angular:满足条件后映射函数停止循环
- jmeter - 当我使用 20 分钟而不是 10 分钟时,恒定计时器不适用于 OS 进程采样器
- r - 基于每行不同的值范围的表格中单元格的条件样式 (R)
- r - 从多个CSV过滤数据并将它们合并为R中的1
- javascript - 如何检查是否选择了来自两个不同选择框的两个特定选项
- apache-kafka - 即使没有消息要消费,Kafka 消费者也会发生重新平衡
- javascript - 在带小数的 React 输入中使用 toLocaleString 的问题
- git - 将 SVN 迁移到 git 不会将标签迁移到 Azure DevOps