2012-12-03 11 views
5

mam takie kody Java:jak mock metodę w obiekcie podczas testowania metody w tym samym obiekcie

public class A { 
    public int get() { 
     // many codes 
     String s = new String(); 
     //... 
     int n = 5; 
     return isEmpty(s) ? n : -1; 
    } 
    public boolean isEmpty(String s) { 
     return s.isEmpty(); 
    } 
} 

teraz chcę po prostu przetestować get(), nie chcę, aby przetestować isEmpty() w tym samym, więc chcę udawać isEmpty(), po prostu przetestować metodę, jeśli wywoła inną metodę klasy, czy easymock może kpić z metody?

+0

drwić isEmpty bez dostać będziesz musiał powierzyć funkcję do innej klasy, a następnie wstrzyknąć do A. Nadzieję, że twój prawdziwy przykład świat jest mniej banalna niż to.... –

Odpowiedz

3

realne podejście do nie udawanym A i zrobić coś jak

public class TestableA extends A 
{ 
    @Override 
    public boolean isEmpty(String s) 
    { 
     // "mock" impl goes here, eg.: 
     return s; 
    } 
} 

i napisać badanej jednostki w kategoriach TestableA zamiast. Można nawet tworzyć to w metodzie @Before:

public class UnitTest 
{ 
    private A a; // note: A, not TestableA! 

    @Before 
    public void setUp() 
    { 
     this.a = new A() 
     { 
      @Override 
      public boolean isEmpty(String s) 
      ... 
     } 
    } 

    @Test 
    ... 
} 
Powiązane problemy