【发布时间】:2018-11-17 10:05:36
【问题描述】:
我正在参加 QA 方法学课程,我们正在使用 Visual Studio 中的测试工具。我有老师要我们实现的测试用例:
str c Result
________________________
null 'a' Exception
" " 'a' -1
"a" 'b' -1
"a" 'a' 0
"a..." 'b' -1
"a..." 'a' 0
"ba.." 'b' 0
"a..b" 'b' 999,999,999
这是在 C# 中完成的,我本季度也将参加(不知道它会成为 QA 课程的一部分,否则我会等一个季度)我有为 1-7 编写的测试方法.我有一个 8 的,但它不太正确。这方面的建议会很有帮助。
这是我的代码:
using System;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace UnitTesting
{
[TestClass]
public class Helper
{
//Part 2 of Assignment
public static int IndexOf(string s, char c)
{
while ()
{
return ...;
}
return -1;
}
//Test cases - part 3 of assignment
//s = null, c = 'a', expected output = Exception
[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void TestMethod1()
{
Helper.IndexOf(null, 'a');
}
//s = " ", c = 'a', expected outout = -1
[TestMethod]
public void TestMethod2()
{
Assert.AreEqual(-1, Helper.IndexOf("", 'a'));
}
//s = "a", c = 'b', expected outout = -1
[TestMethod]
public void TestMethod3()
{
Assert.AreEqual(-1, Helper.IndexOf("a", 'b'));
}
//s = "a", c = 'a', expected outout = 0
[TestMethod]
public void TestMethod4()
{
Assert.AreEqual(0, Helper.IndexOf("a", 'a'));
}
//s = "aaaaaa", c = 'b', expected outout = -1
[TestMethod]
public void TestMethod5()
{
Assert.AreEqual(-1, Helper.IndexOf("aaaaaa", 'b'));
}
//s = "aaaaaa", c = '', expected outout = 0
[TestMethod]
public void TestMethod6()
{
Assert.AreEqual(0, Helper.IndexOf("aaaaaa", 'a'));
}
//s = "baaaaa", c = 'b', expected outout = 0
[TestMethod]
public void TestMethod7()
{
Assert.AreEqual(0, Helper.IndexOf("baaaaa", 'b'));
}
////s = "a...b", c = 'b', expected outout = 999999999
//[TestMethod]
//public void TestMethod8()
//{
// string str = "aa";
// for (int i = 1; i <= 999999990; i++)
// {
// str.Insert(i, "a");
// }
// str.Insert(999999991, "b");
// Assert.AreEqual(999999991, Helper.IndexOf(str, 'b'));
//}
}
}
测试方法 8 被注释掉,因为它导致了超出范围的异常。
我已经用这个功能尝试了几件事。在课堂上,老师特别提到了一个while循环。对于找不到字符的结果,说明还需要其中的“return -1”。
我不知道如何编写 while 循环。我尝试使用 .Contains,循环没有正确结束。我有一种感觉,它真的很简单,但它只是我无法企及的。我在 while 循环中有返回值,因为在我看来,除了 -1 之外,还需要找到字符的结果,
我很抱歉这很简单,但我真的可以求助于更有 C# 经验的人的帮助。我会去学校的辅导实验室,但它周末不开放,下周放假,我的工作安排很糟糕。
提前谢谢你。
【问题讨论】: