2012-12-03 35 views
5

i có mã java như:làm thế nào để thử một phương pháp trong một đối tượng khi thử nghiệm một phương pháp trong cùng một đối tượng

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(); 
    } 
} 

bây giờ tôi muốn chỉ kiểm tra get(), tôi không muốn để kiểm tra isEmpty() tại cùng, vì vậy tôi muốn giả lập isEmpty(), chỉ cần thử nghiệm một phương pháp, nếu nó gọi một phương pháp khác của lớp, có thể easymock giả phương pháp?

+0

Để thử IsEmpty mà không giúp bạn có được sẽ phải giao chức năng đến lớp khác, và sau đó tiêm đó vào A. Hy vọng ví dụ thế giới thực của bạn là ít tầm thường hơn điều này.... –

Trả lời

3

Một cách tiếp cận hoàn toàn khả thi là để không giả A và làm điều gì đó như

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

và viết bài kiểm tra đơn vị của bạn về TestableA để thay thế. Bạn thậm chí có thể tạo ra điều này trong một phương pháp @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 
    ... 
} 
Các vấn đề liên quan