使用测试工具,需要编写一个函数,使测试用例通过字符串和字符传递给IndexOf

时间:2018-11-17 10:05:37

标签: c# 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编写的测试方法。我有一个八分之一,但这不是很正确。对此的建议会有所帮助。

这是我的代码:

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#经验的人的帮助下使用。我会去学校的补习室,但周末不开放,下周放假,我的工作时间表实在很糟糕。

谢谢。

1 个答案:

答案 0 :(得分:2)

完全不需要循环,您可以使用

string str = new string('a', 99999999) + "b";