Я создаю простую линейную диаграмму, используя 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;
}
Ответ 1 · рейтинг 1 · Jeff Bowman
Судя по тому, как вы его структурировали, это особенно сложный класс для модульного тестирования, и я не уверен, насколько ценным будет модульное тестирование. Является ли этот код школьным или рабочим проектом с директивой "модульное тестирование всего вашего кода"?
Во-первых, уточнение на основе ваших тегов: Mockito не является фреймворком для модульного тестирования.
По крайней мере три вещи затрудняют тестирование вашего класса с использованием mocks и JUnit:
- Ваша тестируемая система напрямую вызывает конструкторы. Это дает вам очень мало возможностей заменить тест более простыми реализациями или макетами.
- Соавтор, с которым вы взаимодействуете (JFreeChart API), разработан для графических интерфейсов. Может быть сложно тестировать классы, ориентированные на графический интерфейс, безголовым воспроизводимым способом, что является двумя типичными аспектами модульных тестов.
- Соавтор - это стороннее программное обеспечение, над которым может быть опасно издеваться. Насмешки зависят от некоторых деталей реализации (например, являются ли методы
public или final), которые могут быть опасны для кода, который не находится под вашим непосредственным контролем.
Помните также, что это анти-шаблон для тестирования реализации - модульные тесты предназначены для проверки того, что ваш код дает правильные результаты. Глядя на код, который вы разместили, я не уверен, что бы я там тестировал.
С другой стороны, если у вас есть отдельная часть проекта, которая загружает и обрабатывает числовые данные для ввода в вашу диаграмму, было бы очень просто и полезно создать тест JUnit, который берет данные из файла примера, запускает их через загрузчик/процессор, который вы пишете, и гарантирует, что он выдает правильные числа, которые вы разработали и подтвердили вручную. Дальнейшее прохождение этого теста является некоторой гарантией того, что ваш код по-прежнему работает должным образом, даже если реализация вашего загрузчика/процессора изменится.