将逗号分隔的int字符串转换为int数组的单元测试
本文关键字:int 数组 单元测试 转换 字符串 分隔 | 更新日期: 2023-09-27 17:59:30
我是新手,所以真的不知道我做得是否正确。我想测试的代码是:
public int[] IntArray(string text)
{
return text.Split(',').Select(x => int.Parse(x.Trim())).ToArray();
}
我已经完成的测试还没有完成,所以希望有人能帮忙:
[TestClass]
public class ContextHelperTests
{
public ContextHelper CreateTarget()
{
var context = new ContextHelper();
}
return new ContextHelper();
}
[TestMethod]
public void TestContextHelper()
{
// Arrange
var expectedResult = 12,3;
}
// Act
var values = context.Split(',');
int actualResult = values.Select(x => int.Parse(x)).ToArray();
// Assert
Assert.That(actualResult, Is.EqualTo(expectedResult));
当您实现一个测试时,您不会复制要测试的代码,但您将测试整个代码。
例如,如果你想测试你的IntArray
方法,你只需要调用它并做一些断言,以确保它按预期工作:
var expectedResult = new int[] { 1, 2, 3 };
var result = whatever.IntArray("1,2,3");
Assert.AreEqual(3, result.Length);
Assert.AreEqual(expectedResult[0], result[0]);
Assert.AreEqual(expectedResult[1], result[1]);
Assert.AreEqual(expectedResult[2], result[2]);
您不希望在测试代码中复制所有源代码逻辑。。这毫无意义。相反,因为你知道输入是什么,知道输出应该如何,所以只需指定它,然后确保它们是相等的
你的测试课应该沿着以下几条线看:
[TestClass]
public class ContextHelperTests
{
private SomeClassWithThatMethod _instance;
private string _inputText = "123 , 324 , 4";
private int[] _expectedOutput = new int[] {123, 324, 4};
[TestInitialize]
public void Initialize()
{
_instance = new SomeClassWithThatMethod();
}
[TestMethod]
public void IntArray_ValidInput_3ItemsInOutput()
{
var response = _instance.IntArray(_inputText);
CollectionAssert.AreEqual(response, _expectedOutput);
}
}
只是为了好玩-查看一个名为FluentAssertions的库-很棒的扩展方法,使所有Assert.
部分更可读、更干净