2017-04-10 2 views
0

이미 많은 질문이 있지만 특정 사례에 대한 유용한 유용한 정보는 없습니다.조롱 된 클래스의 필드를 수정하는 메서드 테스트

클래스 A와 그 void에있는 메서드를 테스트하고 B 클래스의 메서드를 호출하여 해당 필드를 수정하거나 검사하는 메서드를 여러 개 호출합니다.

public class A { 
private B b; 

public A(B b){ 
    this.b = b; 
} 

public void checkStageOne(Worksheet ws){ 
    if(long statement){ 
     if(B.checkStorage(ws)){ 
      ws.setThing("Nasty"); 
     } 
     else { ws.setStatus("Not so nasty"); } 
    } 
} 

가 LinkedList들을 어떻게 든 채워 있다고 말한다 수 있습니다 : 여기

은 예입니다. A 급 checkStageOne()의 매개 변수는

public class B { 
private LinkedList<Worksheet> sheetList = new LinkedList<>(); 
private LinkedList<UsedParts> upList = new LinkedList<>(); 
private LinkedList<UsedParts> matList = new LinkedList<>(); 


public boolean checkStorage(int id){ 
    for(UsedParts up : upList){ 
     if(up.getSheetID()== id){ 
      for(Material mat : matList){ 
       if(up.getMatID() == mat.getMatID()){ 
        if(mat.getQuantity() - up.getQuantityNeeded() < 0){ 
         return false; 
        } 
       } 
      } 
     } 
    } 
    return true; 
} 

내가 클래스 B를 조롱하려는 클래스 B에 목록에 포함하지만 난 심지어 결과를 테스트 한 후 B의 분야 가짜 수있는 방법을 전혀 생각이 없다 그 (것)들에. 내가 아는 전부는 EasyMock.expectLastCall()로 void를 테스트 할 수 있다는 것입니다. 그렇다면 실제로 주장을했는지 확인해야합니다.

의견이 있으십니까?

VBR,

+0

: LinkedList의 mock1 = 모의 (LinkedList.class); LinkedList mock2 = mock (LinkedList.class); LinkedList mock3 = mock (LinkedList.class); new B (mock1, mock2, mock3); 그런 다음 해당 모의 행위와 상호 작용이 있었는지 확인할 수 있습니다. –

+0

감사합니다. 좋은 생각입니다. EasyMock에서 확인하는 방법을 알고 있습니까? – assaultpig

답변

0

당신이 코멘트에 대답하기 위해 assaultpig, 당신은 EasyMock에와 같은 일을한다.

하지만 B 조 조롱하고 싶습니다. 그렇다면, 당신이해야하는 것이 아닙니다. 그냥 B을 조롱하세요. 그런 다음 checkStorage 만 응답하면 A을 테스트 할 때 true 또는 false이 반환됩니다. 이 같은

뭔가 :

B b = mock(B.class); 
Worksheet ws = mock(Worksheet.class); 
A a = new A(b); 
expect(b.checkStorage()).andReturn(true); // expect one call to checkStorage to return true 
ws.setThing("Nasty"); // expect setThing to be called 

replay(b, ws); 

a.checkStageOne(ws); // will call checkStorage that will return true 

verify(b, ws); // will make sure setThing was called 
당신이 B의 테스트 인스턴스 생성 mockito 사용 후 3 LinkedList들을을 받아들이고, B의 생성자를 만들 수 있습니다
관련 문제