나 자신에게 가르치려고 애 쓰고 Mockito.모 킷토 "언제"문제가
정말 생각 내 방식으로 실행하지 않아야 다음과 같은 방법 hasInventory()을 고려하지만, 사실 또는 거짓 내가으로 농형 내 테스트를 반환하도록 설정하세요. 클래스 웨어 하우스은 "mocked-dependency"입니다. JUnit 테스트 코드
public class Warehouse implements IWarehouse
{
private Map< String, Integer > inventory;
public Warehouse()
{
this.inventory = new HashMap< String, Integer >();
}
public final boolean hasInventory(String itemname, int quantity)
throws InventoryDoesNotExistException
{
if(inventory == null)
throw new InventoryDoesNotExistException();
if(!inventory.containsKey(itemname))
return false;
int current = (inventory.containsKey(itemname)) ? inventory.get(itemname) : 0;
return(current >= quantity);
}
...
, 제
()는 그대로 메소드 호출 (이를 실행)와, 재고되는 무 (상기 참조)를 해석하기 때문에 예외를 발생,
InventoryDoesNotExistException 인 던져. mocked-dependency 클래스에는 다른 메소드가 있습니다. 예를 들어,
add()과
remove()과 같은 것입니다.() 방법은, 내가 정확하게) (을
hasInventory를 호출하지 않는,하지만 그냥은 내가 테스트로 불리는 대신 때마다 사실을 반환 Mockito 부탁 해요 때 @RunWith(MockitoJUnitRunner.class)
public class OrderInteractionTest
{
private static final String TALISKER = "Talisker";
private Order systemUnderTest = null;
@Mock
private Warehouse mockedDependency = null;
@Before
public void init()
{
//MockitoAnnotations.initMocks(this);
//mockedDependency = mock(Warehouse.class);
this.systemUnderTest = new Order(TALISKER, 50);
}
@Test
public void testFillingRemovesInventoryIfInStock()
{
try
{
doNothing().doThrow(new RuntimeException()).when(mockedDependency).add(anyString(), anyInt());
doNothing().doThrow(new RuntimeException()).when(mockedDependency).remove(anyString(), anyInt());
when(mockedDependency.hasInventory(anyString(), anyInt())).thenReturn(true);
when(mockedDependency.getInventory(anyString())).thenReturn(50);
은 내가 에 의해, 그것을 알고있는 것처럼 클래스 ("systemUnderTest"). 누구든지 내가이 시점을 지나서 도울 수 있을까?
나는이 글을 읽을 모든 사람에게 4.
새빨간 감사 mockito 모두-1.8.5.jar를 연결하고 JUnit을하고있다.
러스
하! 네, 그게 문제입니다. 사실, 오늘 일찍이 이것에 대해 읽었습니다.하지만 저는 연결하지 않았습니다. 다른 튜토리얼의 모방에서 나는 IWarehouse를 모의하기 시작했고 그게 작동하고 있었기 때문에 인터페이스 만 조롱 할 수 있다고 생각 했었습니다. (몇 주 전 누군가에게 간단한 수업을 조롱 할 수 있다고 말했기 때문에 시도하지 않았습니다. 많은 실생활 시나리오에서 생각한 인터페이스를 모의하기 위해서, 나는 인터페이스조차 갖지 못했다.) 그러나 이것은 올바른 대답입니다! 이것 대단히 감사합니다. –