2015-10-06 6 views
0

У меня проблема, когда я хочу проверить весенние данные с помощью junit. Я использую весной JPA данных с JUnit 4:Данные о пружинах и junit

это мой тестовый класс

@ContextConfiguration(locations={"classpath*:applicationContext.xml"}) 
    @Transactional 
    @RunWith(SpringJUnit4ClassRunner.class) 
    public class EquipementServiceTest1 { 

     @Autowired 
     IEquipementService equipmentservice; 
     @Before 
     public void setUp() throws Exception { 
      equipmentservice=new EquipementService(); 
     } 

     @Test 
     public void testValidateEquipement() { 
      equipementEntity e =new equipementEntity(); 
      e.setCode("10"); 
      e.setLibelle("yyyy"); 
      equipmentservice.validateEquipement(e); 
     } 

     @Test 
     public void testGetListEquipement() { 
      List<equipementEntity> list=new ArrayList<equipementEntity>(); 
      list= equipmentservice.getListEquipement(); 
       assertEquals(list.size(), 2);`enter code here` 
     } 

     @Service 
    public class EquipementService implements IEquipementService { 

     @Autowired 
     EquipementRepository equipementRepository;`enter code here 

     @Override 
     public List<equipementEntity> getListEquipement() { 
      return equipementRepository.findAll(); 
     } 

У меня есть исключения нулевого указателя спасибо большое

+0

Где именно вы получаете исключение? – jny

+0

это мой журнал java.lang.NullPointerException \t в app.services.equipementEntite.EquipementService.getListEquipement (EquipementService.java:29) \t в app.services.equipementEntite.EquipementServiceTest1.testGetListEquipement (EquipementServiceTest1.java:45) \t в sun.reflect.NativeMethodAccessorImpl.invoke0 (Родной метод) \t в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) –

ответ

1

У вас есть много вещей происходит здесь. Вы используете autowire EquipmentService, но вы не укажете конфигурацию, поэтому служба не будет автоподключена. Даже если бы это было так, вы сбросите его в методе . Новый equipmentservice не имеет набора репозитория, поэтому NullPointerException, вероятно, брошен в точку equipmentservice пытается вызвать репозиторий.

Это довольно легко решить с помощью @ContextConfiguration и Mockito фиктивных объектов (я предполагаю, что могильник autowired)

  1. Для вас проверить класс добавить @ContextConfiguration annontation.
  2. Добавить внутренний статического класс конфигурации тест
  3. В конфигурации сделать хранилище фиктивного объекта

    @Transactional 
    @RunWith(SpringJUnit4ClassRunner.class) 
    @ContextConfiguration 
    public class EquipementServiceTest1 { 
         @Autowired 
         IEquipementService equipmentservice; 
         @Before 
         public void setUp() throws Exception { 
          //remove this 
          // equipmentservice=new EquipementService(); 
         } 
    
         @Test 
         public void testValidateEquipement() { 
          equipementEntity e =new equipementEntity(); 
          e.setCode("10"); 
          e.setLibelle("yyyy"); 
          equipmentservice.validateEquipement(e); 
         } 
    
         @Test 
         public void testGetListEquipement() { 
          List<equipementEntity> list=new ArrayList<equipementEntity>(); 
          list= equipmentservice.getListEquipement(); 
           assertEquals(list.size(), 2);`enter code here` 
         } 
    
         @Service 
        public class EquipementService implements IEquipementService { 
    
         @Autowired 
         EquipementRepository equipementRepository;`enter code here 
    
         @Override 
         public List<equipementEntity> getListEquipement() { 
          return equipementRepository.findAll(); 
         } 
        } 
    @Configuration 
    public static class Config { 
    @Bean 
    public IEquipementService equipmentservice { 
        return new equipmentService(); 
    } 
    
    @Bean 
    public EquipmentRepository equipmentRepository { 
        return Mockito.mock(EquimentRepository.class); 
    } 
    
    } 
    

Это, очевидно, не было составлено. Также equipmentRepository - макет, поэтому звонок getListEquipment вернет пустой список. Если вы хотите, чтобы он возвращал что-то, вы можете указать его, например, с помощью метода Mockito.when. Пожалуйста, не то, что это Единичный тест, и он тестирует EquipmentService, а не EquipmentRepository. Если вы хотите протестировать функциональность EquipmentRepository, вам нужно будет создать другой тест Unit и настроить его соответствующим образом.

+0

despit я использовать
: EquipementRepository equipmentRepository;
@Test public void testGetListEquipement() { // Список list = new ArrayList (); Список list = equipmentRepository.findAll(); assertEquals (list.size(), 2); } У меня такая же ошибка –

+0

его работа с EquipmentRepository большое спасибо –

Смежные вопросы