Статьи

Как интегрировать и использовать плагин EclEmma для хорошего охвата Junit

Привет друзья,

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

В этом уроке мы увидим, как мы можем использовать плагин EclEmma для проверки покрытия кода нашего java-кода и, следовательно, можем убедиться, что у нас есть хорошее покрытие через тестовые примеры Junit.

Шаг 1 :

Перейти по следующей ссылке:

https://www.eclemma.org/

Шаг 2 :

Нажмите на Установка -> Загрузить вариант в левом меню.

Шаг 3 :

Щелкните правой кнопкой мыши по самой верхней (последней) ссылке (на момент написания этой статьи это «eclemma-3.1.2.zip») и сохраните Zip на своем компьютере.

Шаг 4:

Распакуйте почтовый индекс в том же месте или месте по вашему выбору.

Шаг 5:

Скопируйте извлеченную папку и перейдите в папку eclipse (где установлено ваше затмение) и вставьте эту извлеченную папку в папку dropins в папке eclipse.

Шаг 6:

Перезапустите Eclipse.

Шаг 7:

Щелкните правой кнопкой мыши папку вашего проекта и выберите Coverage As-> JUnit Test и нажмите кнопку Coverage. Он запустит все ваши тестовые примеры и проверит покрытие.

Теперь, потому что на данном этапе у нас нет тестового примера в нашем коде для уровня Service, мы получаем покрытие 0,0%, и все строки кода отображаются красным, что означает, что эти строки не охвачены тестом Junit.

В общем :

Если вы видите зеленый цвет, это означает, что все эти линии проходят тестирование Junit.

Если вы видите красный цвет, это означает, что все эти строки не охвачены тестированием Junit.

Если вы видите желтый цвет, это означает, что ваши тесты прошли эти строки, но не все тестовые случаи были охвачены.

пример

Далее мы собираемся создать загрузочный проект Spring, добавить в него некоторый код, а затем постепенно писать тестовые примеры и смотреть, как плагин EclEmma предоставляет покрытие кода.

Шаг 8:

Давайте посмотрим, как это работает, создав простой загрузочный проект Spring с именем «eclemma». Пожалуйста, следуйте моему уроку Как создать весенний загрузочный проект с помощью Spring Initializer для создания весеннего загрузочного проекта.

Шаг 9:

Во вновь созданном проекте создайте пакеты и классы с именами, как показано на следующем скриншоте

Шаг 10:

Вот исходный код для CalculatorService

01
02
03
04
05
06
07
08
09
10
11
12
package com.blogspot.javasolutionsguide.eclmma.service;
 
/**
 * @author JavaSolutionsGuide
 *
 */
public interface CalculatorService {
 
 int add(int a , int b);
  
 int subtract(int a,int b);
}
1
<br>
1
<br>
1
<br>

Вот исходный код для CalcualtorServiceImpl

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
package com.blogspot.javasolutionsguide.eclemma.service.impl;
 
/**
 * @author javaSolutionsGuide
 *
 */
public class CalculatorServiceImpl {
  
 public int add(int a , int b) {
  int c = a + b;
  return c;
 }
 
 public int subtract(int a,int b) {
  int c = a - b;
  return c;
 }
}

Шаг 11:

Итак, сначала мы напишем тесты только для метода add (), а затем запустим покрытие Eclemma

Вот код для тестовых случаев JUnit для метода add ():

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.blogspot.javasolutionsguide.eclEmma.service.impl;
 
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
 
import com.blogspot.javasolutionsguide.eclemma.service.impl.CalculatorServiceImpl;
 
 
/**
 * @author JavaSolutionsGuide
 *
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {CalculatorServiceImpl.class})
public class CalculatorServiceImplTest {
  
 @Autowired
 private CalculatorServiceImpl calculatorService;
   
 @Test
 public void add_for_givenTwoInteger_shouldReturn_sumOfTwo() {
  Assert.assertEquals("Test case to check if add returns sum of two give positive numbers", 3, calculatorService.add(1, 2));
    }
  
}
1
<br>
1
<br>
1
<br>

Шаг 12:

Теперь давайте снова запустим EclEmma Coverage и посмотрим результаты:

Как мы видим, процент покрытия увеличился с 0,0% до 60% для класса CalculatorServiceImpl, а также строки кода для метода add () теперь имеют зеленый цвет после запуска покрытия, что означает, что эти строки покрыты тестами Junit.

Шаг 13:

Точно так же мы напишем все контрольные примеры для метода вычитания и увидим покрытие.

Добавьте следующий тестовый пример в CalculatorServiceImplTest.java:

1
2
@Test
public void subtract_for_givenTwoInteger_shouldReturn_differenceOfTwo() {
1
2
Assert.assertEquals("Test case to check if subtract returns sum of two give positive numbers", 1, calculatorService.subtract(2, 1));
}

Как мы видим, покрытие для класса CalculatorServiceImpl составляет 100%.

Резюме

Итак, в этом уроке мы узнали, как мы можем использовать плагин EclEmma для просмотра покрытия вашего кода тестом Junit. На основе отчета о покрытии кода Junit мы можем выяснить, какая часть нашего кода покрыта Junit, а какая еще оставив, а затем мы можем, соответственно, написать больше тестовых случаев для непокрытых строк кода, что обеспечит покрытие всех необходимых строк кода через Junit и, следовательно, приведет к лучшему качеству кода.

Если вам нравится читать эту статью, поделитесь ею со своими друзьями, коллегами, для которых, по вашему мнению, она может оказаться полезной.

Опубликовано на Java Code Geeks с разрешения Гаурава Бхардваджа, партнера нашей программы JCG . См. Оригинальную статью здесь: Как интегрировать и использовать плагин EclEmma для хорошего охвата Junit.

Мнения, высказанные участниками Java Code Geeks, являются их собственными.