Модульное тестирование консольного приложения - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь протестировать свое самое первое консольное приложение, и, пытаясь это сделать, я наткнулся на препятствие на пути неспособности протестировать любой негативный сценарий ios. Вот почему - я разделил все действия пользователя на отдельные методы, и эти действия пользователя продиктованы результатом оператора IF, который либо соответствует, либо не соответствует моим условиям.

Я могу смоделировать вход консоли для положительного состояния, которое затем выйдет из моего кода и завершит мой тест. Но (и, очевидно, так), когда я пытаюсь проверить любое ложное условие, оператор перезапускается, и мой тест завершается неудачно с «недостаточным объемом памяти». Я пытался выяснить, есть ли способ проверить мои негативные состояния?

public float UserInput2()
{
    // Ask the user to type the second number.
    Console.WriteLine("Type another number, and then press Enter");
    bool Valid2 = false;
    while (Valid2 == false)
    {
        string Input2 = Console.ReadLine();
        Console.WriteLine(Input2);
        if (!float.TryParse(Input2, out Number))
        {
            Console.WriteLine("Not an integer, please try again.");
        }
        else
        {
            Valid2 = true;
            num2 = (float)Convert.ToDecimal(Input2);
        }
    }
    return num2;
}


[Test]
public void UserInput2Test()
{
    var calc = new CalculatorApp.Program();
    var output = new StringWriter();
    string expectedresult = (string.Format("Type another number, and then press Enter\r\n5\r\n", Environment.NewLine));
    Console.SetOut(output);
    var input = new StringReader("f5");
    Console.SetIn(input);
    var input2 = new StringReader("5");
    Console.SetIn(input2);

    calc.UserInput2();
    //num1 = (float)Convert.ToDecimal(output);

    Assert.That(output.ToString(), Is.EqualTo(expectedresult));

}
...