亲爱的所有我试图对这段代码进行单元测试,但它仍然失败。
public string[] StringArray(string text)
{
return text.Split(',').Select(x => x.Trim()).Select(x => x.Remove(0, 1).Remove(x.Length - 2, 1)).ToArray();
}
我收到错误:
System.ArgumentOutOfRangeException:StartIndex不能小于 零。参数名称:startIndex
我对此有点新,并尝试了很多选项,但测试仍然失败。有人有什么建议吗? 这是我写的测试,也许这都是错的,但我认为错误可能在我的输入中? 真的很感激一些帮助。
[TestClass]
public class ContextHelperTests
{
private ContextHelper _instance;
private string _removeText = "4, 324, 123";
private string[] _expectedOutput1 = new string[] { "4", "324", "123"};
[TestInitialize]
public void Initialize()
{
_instance = new ContextHelper();
}
[TestMethod]
public void ContextHelper_ItemsInOutput_RemoveText()
{
// Arrange
var expectedResult = new string[] { "4", "324", "123" };
// Act
var result = _instance.StringArray(_removeText);
// Assert
Assert.AreEqual("4, 324, 123", result.Length);
CollectionAssert.AreEqual(result, _expectedOutput1);
}
}
答案 0 :(得分:0)
<div class="box" style="width: 100px"></div>
对于“4”,长度为1,因此1-2 = -1。根据{{3}}中的例外表,此参数应大于0.您希望从只有一个字符串的字符串中删除2个字符。
答案 1 :(得分:0)
您的测试失败是因为您拥有此Remove(x.Length - 2, 1)
且测试数据中包含长度为1的字符串 - "4"
。
不确定为什么你在这里使用Remove,试试这个功能
public string[] StringArray(string text)
{
return text.Split(',').Select(x => x.Trim()).ToArray();
}