2016-05-12 5 views
0

Я использую Mockito (1.10.19) в Eclipse mars 2.0 для тестирования Java EE для тестирования автономного хранилища. Этот класс полагается на класс InitialData для извлечения информации.Исключения из Mockito: где мои аргументы неправильные?

Моя первая задача - добавить адрес в список initialData. Вот метод наряду с импортом класса и:

import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.mockito.Mockito; 
import org.mockito.runners.MockitoJUnitRunner; 

import com.qa.smurf.InitialData; 
import com.qa.smurf.entities.Address; 
import com.qa.smurf.repositories.offline.AddressRepositoryOffline; 

import junit.framework.TestCase; 
@RunWith(MockitoJUnitRunner.class) 
public class AddressRepositoryOfflineTest extends TestCase { 
    @Test 
    public void testPersistAddress() { 
     Address newAddress = new Address("a", "a"); 
     ArrayList<Address> addList = new ArrayList<Address>(); 
     addList.add(newAddress); 

     AddressRepositoryOffline aro = Mockito.mock(AddressRepositoryOffline.class); 
     InitialData initialData = Mockito.mock(InitialData.class); 
     Mockito.when(initialData.getAddresses()).thenReturn(addList); 
     assertEquals(newAddress, aro.getAddresses().get(0)); 
    } 
} 

Который должен вызывать класса AddressRepositoryOffline getAddresses() метод, который впоследствии вызывает метод getAddresses Класс InitialData() и вернуть addList ArrayList.

public class AddressRepositoryOffline implements AddressRepository { 
    @Override 
    public ArrayList<Address> getAddresses() { 
     return initialData.getAddresses(); 
    } 
} 

public class InitialData { 
    public ArrayList<Address> getAddresses() { 
     return this.addresses; 
    } 
} 

Я затем запустить в следующие ошибки:

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 
at java.util.ArrayList.rangecheck(ArrayList.java:653) 
at java.util.ArrayList.get(ArrayList.java:429) 
at OfflineRepository.AddressRepositoryOfflineTest.testPersistAddress(AddressRepositoryTest.java:37) 

Line 37 в вопросе

assertEquals(newAddress, aro.getAddresses().get(0)); 

еще с некоторыми ошибками, чтобы сделать с помощью JUnit и MockitoJUnitandHigherRunnerImpl

Очевидно я я неправильно понимаю, как правильно реализовать Mockito здесь. Может ли кто-нибудь помочь мне?

Большое спасибо,

ответ

1

Ваши издевается не вводит в испытании класса AddressRepositoryOffline

Попробуйте это:

@RunWith(MockitoJUnitRunner.class) 
public class AddressRepositoryOfflineTest extends TestCase { 

@Mock 
private InitialData initialData; 

@InjectMocks 
private AddressRepositoryOffline aro; 

@Test 
public void testPersistAddress() { 
    Address newAddress = new Address("a", "a"); 
    ArrayList<Address> addList = new ArrayList<Address>(); 
    addList.add(newAddress); 

    Mockito.when(initialData.getAddresses()).thenReturn(addList); 
    assertEquals(newAddress, aro.getAddresses().get(0)); 
} 
} 
+0

Спасибо так много. – shirafuno

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