Модульное тестирование для Jfreecharts

Я создаю простую линейную диаграмму, используя JFreechart API. Может кто-нибудь дать мне знать, как выполнить модульное тестирование с помощью mockito. Я все еще новичок в модульном тестировании. Не знаю, как это работает

public LineChart(String applicationTitle, String chartTitle) {

    super(applicationTitle);
    // Create the dataset
    CategoryDataset dataset = new DataSet().createDataLineSet();        
    JFreeChart chart = createChart(dataset, chartTitle);
    ChartPanel chartPanel = new ChartPanel(chart);
    chartPanel.setPreferredSize(new Dimension(CHART_WIDTH, 
            CHART_HEIGHT));
    setContentPane(chartPanel);

}

/**
 * Creates a sample chart
 * 
 * @param dataset
 *            ,the chartTitle
 * 
 * @return The chart.
 */
public JFreeChart createChart(CategoryDataset dataset, String chartTitle) {
    // TODO Auto-generated method stub

    // create the chart
    JFreeChart chart = ChartFactory.createLineChart(chartTitle, // chart
                                                            // title
            categoryAxisLabel, // category axis label
            valueAxisLabel, // value axis label
            dataset, // data
            PlotOrientation.VERTICAL, // chart orientation
            true, // include legend?
            true, // include tooltips?
            false // URLs?
            );
    return chart;

}

1 ответ

То, как вы это структурировали, - это особенно сложный класс для модульного тестирования, и я не уверен, сколько будет стоить модульное тестирование. Является ли этот код для школьного или рабочего проекта директивой "unit test all your code"?

Во-первых, пояснение, основанное на ваших тегах: Mockito не является модульным модулем тестирования.

  • junit - это среда модульного тестирования, которая позволяет вам писать классы с помощью методов, которые осуществляют классы. Использование исключений, а также призывы к Assert.assertEquals , Assert.assertTrue , а также Assert.fail (например) вы можете написать тесты с минимальным шаблоном. Чтение начальной страницы JUnit может помочь.

  • mockito - это фреймворк-фреймворк, который позволяет создавать макеты и заглушки объектов и проверять, что тестируемая система правильно взаимодействует со своими соавторами. Хотя предпочтительно выполнять модульное тестирование, просто проверяя возвращаемое значение вызова метода или состояние системы после теста, некоторые классы требуют взаимодействия с внешними системами. Первые несколько пронумерованных пунктов документации Mockito могут помочь.

По крайней мере три вещи затрудняют тестирование вашего класса с использованием mocks и JUnit:

  • Ваша тестируемая система напрямую вызывает конструкторы. Это дает вам очень мало возможностей для замены в более простых реализациях или тестах.
  • Сотрудник, с которым вы взаимодействуете (JFreeChart API), предназначен для графических интерфейсов. Может быть трудно протестировать GUI-ориентированные классы безголовым, воспроизводимым способом, что является двумя типичными аспектами модульных тестов.
  • Соавтор - это стороннее программное обеспечение, которое может быть опасным для насмешек. Пересмешка зависит от некоторых деталей реализации (например, от того, являются ли методы public или же final) это может быть опасно для кода, который не находится под вашим непосредственным контролем.

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

С другой стороны, если у вас есть отдельная часть проекта, которая загружает и обрабатывает числовые данные для подачи в вашу диаграмму, было бы очень просто и полезно создать тест JUnit, который получает данные из файла примера, запускает их через загрузчик / процессор, который вы пишете, и гарантирует, что он выдает правильные числа, которые вы разработали и подтвердили вручную. Непрерывное прохождение этого теста является некоторой гарантией того, что ваш код по-прежнему работает должным образом, даже если реализация вашего загрузчика / процессора должна была измениться.

Другие вопросы по тегам