Как вы тестируете основной метод в Java? - PullRequest
0 голосов
/ 22 января 2020

Это мой класс с основной функцией. Здесь я инициализирую весенний боб с верблюжьим маршрутом. Я не хочу тестировать любые другие классы, упоминаемые в этом коде, но я просто хочу увеличить охват кода этого основного класса. Как мне издеваться и тестировать этот класс?

import org.apache.camel.main.Main;
public class ABC{
public static void main(String[] args) {

        Main main = new Main();
        MyCamelRoute myCamelRoute = SpringUtil.getBean(MyCamelRoute.class);
        main.addRouteBuilder(myCamelRoute);

        Thread t = new Thread(() -> {
            try {
                main.run();
            } catch (Exception e) {
                _logger.error("Unable to add route", e);
            }
        }, "started route");

        t.start();  
    }
}

1 Ответ

0 голосов
/ 22 января 2020

Когда вы пишете «mocks», я предполагаю, что вы намереваетесь написать модульный тест.

ONE: Либо вы тестируете класс , либо , который вы издеваетесь Это. Вы используете mocks, чтобы сделать свой тест независимым от поведения (и, следовательно, возможных ошибок) других модулей («зависимостей» вашей «тестируемой системы» (SUT)).

TWO: Вы не пишете тесты для увеличения покрытия кода. Вы пишете тесты для обеспечения выполнения требований контракта API.

ТРИ: Чтобы протестировать свой основной метод: вызовите его! Вы можете ввести аргументы и посмотреть, соответствует ли возвращаемое значение вашим ожиданиям.

FOUR: Проблема может заключаться в том, что у вас есть stati c зависимости, которые вы не можете контролировать. Spring позволяет настраивать макеты для инъекций бобов. Сейчас я не могу рассказать вам подробности, но я уверен, что вы можете узнать, это должно быть что-то вроде @Configuration аннотированных классов или тестовых спецификаций c их версий.

Но: ваш тест не имеет контроля что бы ни было над объектом main. И искренне, я думаю, что на самом деле вы намереваетесь протестировать класс Main. Также вы можете захотеть внедрить экземпляр Main с помощью Spring.

FIVE : Я не уверен, стоит ли включать многопоточность в модульные тесты, так как это означает, что ваш Тест не может контролировать окружающую среду вашего sut. Если вы не знаете, где начинается ваш тест, вы не можете решить, является ли он правильным или нет.

...