Предоставление персонажа вашим юнит-тестам - PullRequest
0 голосов
/ 02 октября 2008

Я много думал о модульном тестировании и о том, как улучшить читаемость модульных тестов. Я подумал, почему бы не дать персонажу классы в модульном тесте, чтобы уточнить, что они делают.

Вот простой модульный тест, который я написал:

[TestFixture]
    public class when_dave_transfers_money_from_wamu_account_to_the_woodforest_account 
    {
        [Test]
        public void should_increase_the_amount_in_woodforest_account_when_transaction_successfull()
        {
            Dave dave = new Dave();

            Wamu wamu = new Wamu();
            wamu.Balance = 150; 

            wamu.AddUser(dave);

            Woodforest woodforest = new Woodforest();
            woodforest.AddUser(dave);

            FundTransferService.Transfer(100, wamu, woodforest);

            Assert.AreEqual(wamu.Balance, 50); 
            Assert.AreEqual(woodforest.Balance, 100); 
        }
}

Вот класс Дэйв:

/// <summary>
    /// This is Dave!
    /// </summary>
    public class Dave : User
    {      
        public Dave()
        {
            FirstName = "Dave";
            LastName = "Allen";            
        }

    }

Название юнит-теста явно служит цели. Но, может быть, я хочу покопаться немного глубже и назначить учетные записи Wamu и Woodforest Дэйву при каждом создании Дэйва. Проблема в том, что он отойдет от читабельности, так как мне придется использовать значения индекса для ссылки на учетную запись.

Что вы думаете о том, чтобы сделать это более читабельным?

Ответы [ 4 ]

2 голосов
/ 02 октября 2008

Как насчет метода частного помощника в тестовом приспособлении

private Dave GetDave_With_Wamu_And_Woodforest_AccountsHookedUp()
1 голос
/ 02 октября 2008

Вот еще один способ запустить тест:

 [Test]
        public void should_increase_the_amount_in_woodforest_account_when_transaction_successfull()
        {
            Dave dave = new Dave();

            // we know that dave has wamu and wooforest accounts 

            dave.WamuAccount("Wamu").Balance = 150;

            FundTransferService.Transfer(100, dave.WamuAccount("Wamu"), dave.WoodforestAccount(
                "Woodforest"));

            Assert.AreEqual(50, dave.WamuAccount("Wamu").Balance);
            Assert.AreEqual(100, dave.WoodforestAccount("Woodforest").Balance);             
        }
0 голосов
/ 02 октября 2008

при попытке создать экземпляр Wamu, не должен ли он вызвать исключение WamuNotFoundException?

0 голосов
/ 02 октября 2008

Я могу добавить Дэйва к учетной записи Wamu и Woodforest, когда Дейв создается следующим образом:

 public Dave()
        {
            FirstName = "Dave";
            LastName = "Allen"; 

            // add accounts for Dave 

            Wamu wamu = new Wamu();
            wamu.AddUser(this);

            Woodforest woodforest = new Woodforest();
            woodforest.AddUser(this); 
        }

К учетным записям добавляется коллекция List в объекте User, от которого наследуется Dave.

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