最终方法模拟

我需要使用嘲笑用最终方法模拟某些类。我写了这样的东西


@Test

public void test() {

    B b = mock(B.class);

    doReturn("bar called").when(b).bar();   

    assertEquals("must be \"overrided\"", "bar called", b.bar());

    //bla-bla

}



class B {

    public final String bar() {

        return "fail";

    }

}

但是失败了。我尝试了一些“ hack”,并且有效。


   @Test

   public void hackTest() {

        class NewB extends B {

            public String barForTest() {

                return bar();

            }

        }

        NewB b = mock(NewB.class);

        doReturn("bar called").when(b).barForTest();

        assertEquals("must be \"overrided\"", "bar called", b.barForTest());

    }

它有效,但“闻起来”。


那么,正确的方法在哪里?


谢谢。


子衿沉夜
浏览 703回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP