Как модульно протестировать блоки кода в Spring boot

#spring-boot #unit-testing #junit #mockito #springmockito

#spring-boot #модульное тестирование #junit #mockito #springmockito

Вопрос:

У меня есть модульный тест в spring boot, написанный с использованием junit и mockito. У меня есть метод, который использует метод, который принимает блок кода в качестве входных данных и выполняет требуемую функцию. Ниже приведен пример кода.

 class A{
    execute(Codeblock codeblock){
      
    }

   }
 


Class B {
    
   
  C testFunction(){
     return A.execute(()->{
               code to execult ...;
              });
    }
  
  }

class TestB{
    @InjectMock
   B b;
    @Mock
   A a;
 void testFunction(){
    when(A.execult(any())).return(C);
    AssertNotNull(b.testFunction());
    }
}
  

Этот код работает нормально, но охват кода очень низкий, потому что блок кода не выполняется. Есть ли какой-либо способ выполнить блок кода и увеличить охват.

Ответ №1:

Тестирование вашего класса (B) с использованием mocks (A) является правильным, цель состоит в том, чтобы протестировать любую логику в B и проверить взаимодействие с сотрудниками (в данном случае A).

Затем я бы создал тест для (mocking Codeblock class), применяя тот же принцип, что и выше.

Наконец, я бы проверил логику Codeblock независимо.