Модульное тестирование делегирования методов - PullRequest
4 голосов
/ 13 августа 2010

Есть ли смысл в модульном тестировании метода, что единственное, что он делает, это делегирует работу над другим объектом?Пример:

class abc {

    ...

    public void MoveLeft()
    {
        fallingPiece.MoveLeft();
    }

    ...
}

Я делаю юнит-тесты для некоторых существующих классов в учебных целях.Например, кажется странным делать Unit-Test для этого метода MoveLeft ().Но я не уверен, как бы это было, если бы я сделал первый тест.

Спасибо

Ответы [ 3 ]

4 голосов
/ 13 августа 2010

Не сломается ли ваш код, если я сделаю это? Если да, то вам нужен тест, чтобы поймать его.

class abc {
    ...
    public void MoveLeft()
    {
        // fallingPiece.MoveLeft();
    }
    ...
}

Допущения: abc является открытым / открытым типом, а fallPiece является зависимостью. Если это так, то вам нужен тест для проверки поведения MoveLeft. Если это не публичный тип, вам нужен тест для публичного типа XYZ, который использует abc в качестве коллоборатора / зависимости. Вы не тестируете его напрямую, но его все еще нужно проверить.

1 голос
/ 13 августа 2010

Мое понимание модульных тестов состоит в том, что они существуют для того, чтобы гарантировать, что логика внутри метода остается неизменной, когда вы не собирались его менять, и в этом методе нет логики. У нас в коде, где я работаю, много сквозных методов, подобных этому. Якобы, они являются классами «Контроллера», но в большинстве случаев все, что они делают, это проходят на уровень данных.

Да, вы можете их модульно протестировать, предполагая, что у вас есть способ издеваться над fallingPiece. Если вы действительно планируете расширить метод MoveLeft для включения логики, это, вероятно, хорошая идея.

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

0 голосов
/ 13 августа 2010

Один из случаев, когда этот метод может потерпеть неудачу, - это когда dropPiece равен нулю, когда вызывается Abc.MoveLeft. Было бы неплохо иметь тестовый пример, который создает допустимый abc и вызывает abc.MoveLeft. что-то вроде CanMoveLeft () { Abc abc = новый Abc (); abc.MoveLeft (); Assert.That (abc.fallingPice переместился влево) }

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