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

Я создаю простую линейную диаграмму, используя API JFreechart. Может ли кто-нибудь сообщить мне, как провести модульное тестирование с помощью 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;

}

person Anonymous    schedule 13.06.2014    source источник


Ответы (1)


Судя по тому, как вы его структурировали, это особенно сложный класс для модульного тестирования, и я не уверен, насколько ценным будет модульное тестирование. Является ли этот код школьным или рабочим проектом с директивой «модульное тестирование всего вашего кода»?

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

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

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

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

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

person Jeff Bowman    schedule 13.06.2014
comment
Спасибо .. Это помогает !! - person Anonymous; 20.06.2014