大家写单元测试时候,一定比较不喜欢测试那些返回void的方法,因为大多数是执行一些动作序列,感觉没法测试,其实,对于这类方法,如果方法的执行是可能发生异常的,(比如方法本身就用throws语句),那么这种方法就算是void返回值,也是可以测试的。
举个例子,以下就是我写的一个为返回void方法进行的单元测试:
@Test public void testServeResource() throws Exception { MockWebServer mockWebServer = new MockWebServer(); mockWebServer.init(); MockResourceRequest request = new MockResourceRequest(); request.setParameter("id", "4"); request.setParameter("name", "walmart"); MockResourceResponse response = new MockResourceResponse(); MockPortletPreferences preferences = new MockPortletPreferences(); preferences.setValue(RSLaunchConstants.RS_LAUNCH_PORTLET_PREFERENCE_REST_WS_URL, "http://localhost:28080/"); request.setPreferences(preferences); try{ rsLaunchPortlet.serveResource(request, response); mockWebServer.destory(); assertTrue(true); }catch(Exception ex){ //normally,the execution should never reach here ,so if reach here , we fail this UT assertTrue(false); } }
我们可以看到,最关键的地方在第13到20行之间,我们用一个try块包含了可能炮异常的代码段,并在这个块尾部加上assertTrue(true),而在catch块中加上assertTrue(false),那么结果就很明了了,如果这个方法是正确的执行,那么它肯定是执行完try块中的所有的语句,所以会执行assertTrue(true)而显示绿条。但是如果这个方法执行不正确,那么就会在14或者15行抛出异常,从而执行catch块中,所以就会执行到19行,从而显示红条了。很简单吧
本文出自 “平行线的凝聚” 博客,请务必保留此出处http://supercharles888.blog.51cto.com/609344/989564
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索单元测试
, 方法
, request
, setparameter
, void
Preferences
java void 无返回值吗、java void返回值、void 单元测试、void方法的单元测试、单元测试 void方法,以便于您获取更多的相关知识。