怎么测试abstract class

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hongchangfirst/article/details/80996528

关于对abstract class需不需要一个单独的unit test,业界有很多争论。

https://stackoverflow.com/questions/7569444/how-to-test-abstract-class-in-java-with-junit

不支持立场的观点是abstract不能被实例化,如果被实例化的话,那么一定有实现类,所以测实现类的时候,顺便就会测到abstract class的逻辑。

支持立场的观点是就算abstract不能被实例化,但是我有一些逻辑在abstract class,我不用等到具体的实现类去测试它,我可以自己去测试。

不管争论是什么,需不需要,我们暂且不讨论。这里说一下如果我们真有一些abstract class,里有一些method是有一些逻辑的,我们又想测试怎么办。大概思路有两个:

1 自己写一个subclass wrapper来进行测试。

2 用partial mock

AbstractService s = Mockito.mock(AbstractService.class,Mockito.CALLS_REAL_METHODS);

然后用s进行测试,如果里边有一些调用了abstract method,那么你可以stub它:

Mockito.when(service.getContactType()).thenReturn(AbstractService.ContactType.email);


原文:http://blog.csdn.net/hongchangfirst/article/details/80996528

作者:hongchangfirst

hongchangfirst的主页:http://blog.csdn.net/hongchangfirst


猜你喜欢

转载自blog.csdn.net/hongchangfirst/article/details/80996528