将逗号分隔的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));

将逗号分隔的int字符串转换为int数组的单元测试

当您实现一个测试时,您不会复制要测试的代码,但您将测试整个代码

例如,如果你想测试你的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.部分更可读、更干净