JMockit с JUnit5 - JMockit не был инициализирован - PullRequest
0 голосов
/ 28 апреля 2020

Когда я использую следующий метод Test с использованием JUnit 5 и JMockit, я получаю сообщение об ошибке:

JMockit не инициализирован; проверьте, что был использован параметр инициализации JVM -javaagent

Это мои классы, которые я создал и хочу проверить:

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;

    class Employee 
    {
        private Integer empId;
        private String empName;

        public Employee(Integer empId,String empName)
        {
            this.empId = empId;
            this.empName = empName;
        }

        public Integer getEmpId() {
            return empId;
        }
        public void setEmpId(Integer empId) {
            this.empId = empId;
        }
        public String getEmpName() {
            return empName;
        }
        public void setEmpName(String empName) {
           this.empName = empName;
        }
    }
    class EmployeeDAO
    {
        private static List<Employee> employeeList = new ArrayList<Employee>();

        static
        {
           Employee e1 = new Employee(1001, "John");
           Employee e2 = new Employee(1002, "Jack");

           Collections.addAll(employeeList, e1,e2);
        }

        public static List<Employee> getEmployeeList() {
           return employeeList;
        }

        public static void setEmployeeList(List<Employee> employeeList) {
           EmployeeDAO.employeeList = employeeList;
        }
    }

    class EmployeeService
    {
       public List<Employee> getEmployees()
       {
           List<Employee> empListFromDao = new ArrayList<Employee>();
           try
           {
               empListFromDao = EmployeeDAO.getEmployeeList();
           }
           catch(Exception e)
           {
              throw e;
           }
           return empListFromDao;
       }
    }

И это моя реализация теста:

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;

import mockit.Mock;
import mockit.MockUp;
import mockit.integration.junit5.JMockitExtension;
import static org.junit.jupiter.api.Assertions.assertEquals;

@ExtendWith(JMockitExtension.class)
public class EmployeeTest
{
      @Test
      public void testMethodForStaticMock$FromService()
      {
          new MockUp<EmployeeDAO>()
      {
          @Mock
          public List<Employee> getEmployeeList()
          {
              return new ArrayList<Employee>();
          }
      };

          EmployeeService service = new EmployeeService();
          assertEquals(0,service.getEmployees().size());
      }
}

Стек проекта, который я использовал:

  • JDK 11.0.1
  • Eclipse IDE 2020-03
  • JUnit 5 (добавлен как библиотека в Eclipse к пути к классам проекта)
  • JMockit 1.49 (добавлен как JAR)

Из-за вышеупомянутой проблемы мой тестовый пример не проходит. Любые предложения о том, как решить эту проблему? Или есть какой-то другой способ издеваться над стати c методом?

...