Метод класса выводит строковое сообщение, не может выполнить модульный тест из-за ошибки, поскольку преобразование из void в строку не применимо - PullRequest
0 голосов
/ 14 сентября 2018

Я совсем новичок в модульном тестировании.До сих пор я мог успешно тестировать методы модульного тестирования, которые возвращают тип данных, такой как перечислимые типы, целочисленные типы и строковые типы.Тем не менее, я не могу показаться, что методы модульного теста void возвращаемого типа, которые выводят строку, говорят, что невозможно преобразовать 'void' в строку.Нет возвращаемого типа.Код ниже должен прояснить мою проблему.Это метод:

public void Details()
    {
        if (_type == AccountType.FixedDeposit)
        {
            Console.WriteLine(String.Format("Fixed Deposit Account:{0,-5}Balance:{1}", _accNumber, _balance));
        }
        else
        {
            Console.WriteLine(String.Format("{0,-13} Account:{1,-5}Balance:{2}", _type, _accNumber, _balance));
        }

Это код модульного теста:

[TestCase]
    public void TestDetails()
    {
        BankAccount b = new BankAccount(111, AccountType.Saving);
        b.Deposit(1000);
        b.Withdraw(500);
        StringAssert.AreEqualIgnoringCase("Saving       Account:111  Balance:500", b.Details());
    }

Я ожидал, что он выведет строку, которая может сравнивать тоже.

1 Ответ

0 голосов
/ 14 сентября 2018

Измените Details, чтобы вместо строки выводить строку:

public string Details()
{
    if (_type == AccountType.FixedDeposit)
    {
        return String.Format("Fixed Deposit Account:{0,-5}Balance:{1}", _accNumber, _balance);
    }
    else
    {
        return String.Format("{0,-13} Account:{1,-5}Balance:{2}", _type, _accNumber, _balance);
    }
}

Обратите внимание, что вам придется изменить свой "производственный" код и добавить вызовы Console.WriteLine в места, которые называются Details.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...