我正在参加质量检查方法论课程,我们正在使用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编写的测试方法。我有一个八分之一,但这不是很正确。对此的建议会有所帮助。
这是我的代码:
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循环。指令还希望在其中返回“ -1”,以查找找不到字符的结果。
我不知道如何编写while循环。我尝试使用.contains,循环未正确结束。我觉得这真的很简单,但是这超出了我的能力范围。我在while循环中有返回值,因为在我看来,找到字符的结果需要除-1之外的其他值,
我很抱歉这是否像我担心的那么简单,但是我确实可以在具有C#经验的人的帮助下使用。我会去学校的补习室,但周末不开放,下周放假,我的工作时间表实在很糟糕。
谢谢。
答案 0 :(得分:2)
完全不需要循环,您可以使用
string str = new string('a', 99999999) + "b";