Общая структура классов, подходящих для юниттеста - PullRequest
1 голос
/ 18 августа 2011

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

Есть ли у кого-нибудь предложения о том, какструктурировать мое приложение так, чтобы все части легко тестировались?Конечно, я мог бы перестроить всю логику из контроллера и иметь только один вызов к другому классу для каждого метода контроллера, а затем использовать только методы рендеринга в контроллере, но это кажется немного радикальным.

есть способ посмотреть на результаты после запуска метода в контроллере, например

public static void controllerMethod(String a){
    String result = doSomething();
    String calcResult = calculateSomething(a);
    render(result, calcResult)
}

Как проверить, что после этого метода ожидаемый результат и calcResult - это то, что я хочу, чтобы он был вunittest?

Все примеры на игровом сайте посвящены тестированию модельного слоя.Я знаю, что могу запускать функциональные тесты для контроллера, но это немного поверхностно для того, что я хочу тестировать.

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

Ответы [ 2 ]

1 голос
/ 18 августа 2011

Задачей контроллеров должно быть (в основном) управление потоком приложения (какую страницу показывать дальше).Для этого вы можете использовать тесты селена в Play.

Если вы обнаружите, что добавляете много логина в контроллере, либо перенесите его в методы соответствующей модели (если применимо), либосоздайте средний слой (ala Services), который управляет сложными частями.Их будет проще тестировать, чем контроллеров, и они позволят вам повторно использовать логику на нескольких контроллерах (например, через браузер вызова REST API)

0 голосов
/ 18 августа 2011

"Как я могу проверить, что после этого метода ожидаемый результат и calcResult - это то, что я хочу, чтобы он был в юнит-тесте?"Не запускайте тест JUnit для controllerMethod (Sting a), но запускайте два теста JUnit для doSomething () и вычисленияSomething (a).Поскольку оба возвращают строку, это прямо вперед.

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

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