Модульное тестирование для 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, который получает данные из файла примера, запускает их через загрузчик / процессор, который вы пишете, и гарантирует, что он выдает правильные числа, которые вы разработали и подтвердили вручную. Непрерывное прохождение этого теста является некоторой гарантией того, что ваш код по-прежнему работает должным образом, даже если реализация вашего загрузчика / процессора должна была измениться.