5

私はそのようなJavaコードを持っています:

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

get() だけをテストしたいのですが、同時に isEmpty() をテストしたくないので、isEmpty() をモックしたいのですが、メソッドをテストするだけです。クラスの別のメソッドを呼び出す場合は、簡単にモックをモックできますメソッド?

4

1 に答える 1

3

実行可能なアプローチは、モックではなくA、次のようなことをすることです

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

TestableA代わりに単体テストを記述します。@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
    ...
}
于 2012-12-03T13:34:04.977 に答える