相关疑难解决方法(0)

调用Console.ReadLine()的方法的C#单元测试

我想为一个类的成员函数创建一个单元测试,该类函数ScoreBoard存储游戏中的前五名玩家.

问题是我为(SignInScoreBoard)创建的测试方法是调用,Console.ReadLine()所以用户可以输入他们的名字:

public void SignInScoreBoard(int steps)
{
    if (topScored.Count < 5)
    {
        Console.Write(ASK_FOR_NAME_MESSAGE);
        string name = Console.ReadLine();
        KeyValuePair<string, int> pair = new KeyValuePair<string, int>(name, steps);
        topScored.Insert(topScored.Count, pair);
    }
    else
    {
        if (steps < topScored[4].Value)
        {
            topScored.RemoveAt(4);
            Console.Write(ASK_FOR_NAME_MESSAGE);
            string name = Console.ReadLine();
            topScored.Insert(4, new KeyValuePair<string, int>(name, steps));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法插入十个用户,所以我可以检查是否存储了五个较少的移动(步骤)?

c# console unit-testing visual-studio console-redirect

11
推荐指数
4
解决办法
1万
查看次数

如何对需要用户输入的代码进行单元测试 C#

这是我第一次进行单元测试/集成测试,我有一个问题。所以我开始对我的代码做单元测试,但是我有一个方法,它实际上是整个应用程序的逻辑,其中调用了多个方法,并且需要用户输入。我如何测试该方法?方法如下:

  public async Task RunAsync()
    {
      
        var watch = System.Diagnostics.Stopwatch.StartNew();
        var playAgain = 'y';

        do
        {
            var attempts = 1;
            var foundNumber = false;
            while (attempts < 10 && foundNumber == false)
            {
                try
                {
                    var inputNumber = int.Parse(GetInput());

                    if (inputNumber == _randomNumber)
                    {
                        foundNumber = true;
                        OnSuccesfulGuess(watch, attempts);

                    }
                    else if (attempts < 10)
                    {
                        OnWrongGuessWithinAttempts(inputNumber);
                    }
                    else
                    {
                        Console.WriteLine("Oops, maybe next time.");                      
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Please enter a number");
                }

                attempts++;
            }

            playAgain = PlayAgain(playAgain); …
Run Code Online (Sandbox Code Playgroud)

c# asp.net integration-testing unit-testing

0
推荐指数
1
解决办法
2299
查看次数