{"version":"1.0","provider_name":"Final Blog","provider_url":"https:\/\/finaldie.com\/blog","author_name":"final","author_url":"https:\/\/finaldie.com\/blog\/author\/final\/","title":"How to Write a Simple UnitTest Framework - Final Blog","type":"rich","width":600,"height":338,"html":"<blockquote class=\"wp-embedded-content\" data-secret=\"kSpI41KSvG\"><a href=\"https:\/\/finaldie.com\/blog\/how-to-write-a-simple-unittest-framework\/\">How to Write a Simple UnitTest Framework<\/a><\/blockquote><iframe sandbox=\"allow-scripts\" security=\"restricted\" src=\"https:\/\/finaldie.com\/blog\/how-to-write-a-simple-unittest-framework\/embed\/#?secret=kSpI41KSvG\" width=\"600\" height=\"338\" title=\"&#8220;How to Write a Simple UnitTest Framework&#8221; &#8212; Final Blog\" data-secret=\"kSpI41KSvG\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" class=\"wp-embedded-content\"><\/iframe><script>\n\/*! This file is auto-generated *\/\n!function(d,l){\"use strict\";l.querySelector&&d.addEventListener&&\"undefined\"!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!\/[^a-zA-Z0-9]\/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret=\"'+t.secret+'\"]'),o=l.querySelectorAll('blockquote[data-secret=\"'+t.secret+'\"]'),c=new RegExp(\"^https?:$\",\"i\"),i=0;i<o.length;i++)o[i].style.display=\"none\";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute(\"style\"),\"height\"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<200&&(r=200),s.height=r):\"link\"===t.message&&(r=new URL(s.getAttribute(\"src\")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener(\"message\",d.wp.receiveEmbedMessage,!1),l.addEventListener(\"DOMContentLoaded\",function(){for(var e,t,s=l.querySelectorAll(\"iframe.wp-embedded-content\"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute(\"data-secret\"))||(t=Math.random().toString(36).substring(2,12),e.src+=\"#?secret=\"+t,e.setAttribute(\"data-secret\",t)),e.contentWindow.postMessage({message:\"ready\",secret:t},\"*\")},!1)))}(window,document);\n<\/script>\n","description":"\u5f88\u591a\u65f6\u5019, \u6211\u4eec\u9700\u8981UnitTest\u5e2e\u52a9\u6211\u4eec\u5feb\u901f\u7684\u53d1\u73b0\u4ee3\u7801\u4fee\u6539\u4e2d\u5f15\u53d1\u7684\u95ee\u9898, UnitTest\u7684\u610f\u4e49\u4ee5\u53ca\u91cd\u8981\u6027\u5df2\u7ecf\u65e0\u9700\u91cd\u590d, \u90a3\u4e48\u5728\u5b9e\u9645\u9879\u76ee\u4e2d, \u6211\u4eec\u4f1a\u9009\u53d6\u5408\u9002\u7684UnitTest Framework\u5e2e\u52a9\u6211\u4eec\u5b8c\u6210\u8fd9\u9879\u5de5\u4f5c, \u7136\u800cUnitTest Framework\u4e5f\u6709\u5f88\u591a\u79cd, \u6311\u9009\u7684\u65f6\u5019\u5927\u591a\u6839\u636e\u9879\u76ee\u9700\u8981, \u4e0d\u8fc7\u5927\u5bb6\u662f\u5426\u6709\u51b2\u52a8\u81ea\u5df1\u5199\u4e00\u4e2a\u90a3? \u6765\u4e00\u63a2UnitTest Framework\u7684\u7a76\u7adf(\u672c\u6587\u5c06\u5b9e\u73b0\u4e00\u4e2aC\u8bed\u8a00\u7684UnitTest Framework \u4ee3\u7801\u653e\u7f6e\u5728https:\/\/github.com\/finaldie\/final_libs\u7684ftu\u4e2d). \u539f\u7406: UnitTest Framework\u901a\u5e38\u5e2e\u52a9\u6211\u4eec\u5b8c\u6210\u4ee5\u4e0b\u51e0\u79cd\u529f\u80fd: 1. \u63d0\u4f9b\u5e38\u7528assert API 2. \u6ce8\u518c\u6267\u884ctest case 3. \u751f\u6210report \u5173\u4e8e\u65ad\u8a00, \u6211\u4eec\u901a\u5e38\u4f7f\u7528\u51e0\u79cd\u5f62\u5f0f\u7684\u65ad\u8a00, \u6bd4\u5982: 1.\u00a0\u67d0\u4e2a\u503c\u662f\u5426\u4e8e\u671f\u671b\u503c\u76f8\u7b49 2. \u67d0\u4e2a\u503c\u662f\u5426\u5927\u4e8e\u671f\u671b\u503c 3. \u67d0\u4e2a\u503c\u662f\u5426\u5c0f\u4e8e\u671f\u671b\u503c \u6240\u4ee5, \u5982\u679c\u6211\u4eec\u81ea\u5df1\u6765\u5199\u4e00\u4e2a, \u53ea\u9700\u8981\u63d0\u4f9b\u57fa\u672c\u7684assert API, \u6ce8\u518c\u548c\u6267\u884c\u7684API\u5373\u53ef(\u6700\u540e\u7684\u62a5\u544a\u653e\u5728run API\u5185\u90e8\u5373\u53ef). WorkFlow: \u5b9e\u73b0: \u00a0\u00a0\u539f\u7406\u6e05\u695a\u4e86, \u5b9e\u73b0\u8d77\u6765\u5c31\u5f88\u5bb9\u6613\u4e86. \u9996\u5148\u6211\u4eec\u5148\u6765\u63d0\u4f9b\u51e0\u4e2a\u57fa\u672c\u7684assert API: extern int curr_failed_assert; extern int curr_total_assert; #define FTU_ASSERT_EQUAL_CHAR(expect, real)  ... Read more","thumbnail_url":"http:\/\/finaldie.com\/wordpress\/wp-content\/uploads\/2011\/12\/Screen-shot-2011-12-06-at-1.39.33-PM.png"}