[工具]小测试和学习项目清单化框架_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > [工具]小测试和学习项目清单化框架

[工具]小测试和学习项目清单化框架

 2014/9/30 16:08:50  Caption  程序员俱乐部  我要评论(0)
  • 摘要:下载:Personal_Study_Assistant.zip背景实际中,我们可能要经常会对一些API或小核心代码不太确定,于是写一些小测试代码,如正则表达式测试。时间久了,这些小项目散落得到处都是,查找和整理起来都比较费时间。“工欲善其事,必先利其器”,下面让我们来解决一下这个问题吧。程序的思路是:1所有的测试文件统一归类存放于不同的Project;2Project启动时,自动生成所有测试代码的清单,通过输入清单序号选择对应的测试来执行
  • 标签:学习 工具 测试 项目

下载:Personal_Study_Assistant.zip

 

背景

  实际中,我们可能要经常会对一些API或小核心代码不太确定,于是写一些小测试代码,如正则表达式测试。时间久了,这些小项目散落得到处都是,查找和整理起来都比较费时间。

“工欲善其事,必先利其器”,下面让我们来解决一下这个问题吧。

  程序的思路是: 1所有的测试文件统一归类存放于不同的Project; 2Project启动时,自动生成所有测试代码的清单,通过输入清单序号选择对应的测试来执行,不用更改Program的Main方法。

  (目前还不能显示测试用例对应的文件名)。

 

效果

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" alt="" />

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" alt="" />

XMLlo95Tlu6aurJm+ZseM9R8FOzoehh9Q/c/rWx+GH5SsWFX9xTmzhVVTCCHkybfXbn/7J+Q/X95+dceh9385ONDQqinkufdVl+//ksT4yf/WqqxZCUAhasoYg7bxWE0cEqcgjtq3VhPmGBBCyJQFjhgUaMFzJO6EpLj+/NsRuax9+cloDZ58e61W1jF+uSqBdJJdfMljpVlhqw+yU4/wMLlBbKirphhzXPBcpNrWM0q5Zg321A5n9V2wb1bhah0X75R/mJObL9I75R/quMgeMbLn9LGOjypj2lbZsW1wvOGtJdTghreWcGeoyMeBZlY/PHp0sK6hoPLzwqq/v7ll3/ztexft2i1q2x/8oyF+e3U2IdnvNjOTmTN2cHwxqpvxpHGl6NJosDqbEPJctdSafgBKUVMxm+t+l0meXLLOAeNW68ZJMGnBWIlzx5I08uLC6HjGu1ZvgfbiHUvSnnwx+8nEb66NE8JuMRzXHUvSjA/CYBEcj4G3N+nFT/yxsvogJ1ic4XaD+GsWPhfNd8eStMG3CAffGJOlWX8obQn2HWoKOquWYN+sP5TquMjJzX8kJic3X8dF9oiR904cbv+gvL26vL26/EZ0EFFObv7jKDm5+X9ZuNg0c6O6/EZ0Mak53MKqr//+wbqGZTu+fH7V5vGr/zyhfN2kv5RG2nY4/CD84P7D8INJG0ojbXvL/sb47dWjSWbezhaNSZ52Lk2bUK1xGW9w59I0MnWRzJp2AGpRU0abDtq3Ujd+gkkKxkqcq6eS9KUV9s6AlcUVv89M+3195GtyS62zJXY76vPSyejVKYiBtzfZxU/8sbL6ICdanGF2g0Rrdi5NS19acbhl0QSae+rfKyzrlTfLWoJ99U1BZ9UcDL3yZpmOC2XbFm1sCfZRF9kjRnYfq2vbWHp9U+n1TaXXN5ZFB6XXN5VWzl+Yk5v/QxTTuHL+wrZNpdc3lUa+kl1HW1iF+u8frGv41TvvPbum4vn1a3+9cfXkD94JdnSEw2H6afu1fxRE2vbWLxuNe0dHv9+SVlC/62j1aJKZV9NiGLTsqlmaNrhk6uKjLbtKp5L0pRXR7RUFmaNLY9bElwaDR1t2Ha3PSyejSyXWTOtNkRCDl/q89LjJxROjiyZWx5sy2oybHD0xczA7jgtxKczeq2kxycRqNjBxghIXxvAYg6JoC6Ya7qm8JlTVow3rI5eGLYpo0wqWjiaZeTXR2xoxEn9zo+XKzKtp2VWzNC32kikv0yV1Jym1IMG4Opi3xN2OmqVpsXtqKktmXilNs57zqrmMsfWjS1sqCjLj70VkC1veJBbffOrM6cQ/IMzh0XqQBUdX7EueC+N3SN8g4Tve0ZaKgsy09Ex6YkXLPKVX3ixrCYbqmzqdVaRtUxfNwb5DTZ1c0bZt+va44dM2f6PRRaRtt1aubH1vZWvlymuVK1srY4Nr7618b978nNz87+PJyc1/b978wWXvDS4mu4+1sgoNPDhY1zBhXfkLlWU5Ve9O2bpi2o7iYEfH9w/Dxu+TR9r2RwfOx2/fMoZkzqwxjdlB6+6yqWkFgd1lU0l60frY3qlvxZkSXRq9tO4+FpiZTsaUtYqtmdZHZsiYstbdx1p31xSlDb4amJlO0goCvLLIcllfkBn1u2UMoRa4LsSl4HiPW0MmbmFC4iQYH4zJhSE8s0FRtGRwWdlUEnc7BLnEFJiZTgi1yT8YJiODi9cXZJLIpCHItyZSU1HVFKUNZhqYmS4oFCdNs2XBCTHHxtTBtMVwO2KBsQbJ4N2JFTn+1Wivesu0vmwqMd47cwycJyI5xTedOjYdedHkD2b0QRYcXbEvVS7D6AaJQuUWXLTMQ5o9b82JC+0bPzvD1ZsllZK/eH6zpFK08cSF9tnz1ui4yMnN7+rq6urqysnNl09KXGSPGHmlau0/s9MlWj7hWWo2Ynn5hGfZZWTPV9dYRdr2pA2lk99f+eJHf3xpZ9HM3YuDHR0PH9xn2/a22gvx27eMIZmzdpnG0cGuolHEwMQtcXvXTBs197DepdHLtT1fHZ6VbrxUro9EMu3t6OXbE8mYNeZJaicabnwuXxlPPN1lcMR1ISkFx7vJGpEWhAmGU22xQXm0pmCENWG0q2gUkZoyFiS9aL058S1jBqPaMib26qDWz82k8a+fmzl4nDh5Ec5JEM0rbjrvVLO3g3uQGC/RIvNfFT9N3Bh4tyAZxRc/VsyZER4e9YMsP7ry88nPZdjcIGGo0YwmTiPc+nhVs+etOXmxvepvX3Nl/DtglpzcfNHGkxfbZ89bE+fi719zlZOb39bW1tbWZvozAZ0UbTx58SZ1EWnbteOyDozPqh0/+LV2fFbt+Kdqxz1VOz7rj5MmUpuUnNz8P06aWDvuqdpxWQfGZR0Yl1U7/imy9/h1VpG2nbvlT9O2l7xcs2TWXxe9+tm8YEfH6SjhBw96e3t67t0tWbFqR93F+O1bnyFZr3xiGkcHnywbRaYt4Tnde/zwKxl0o/LS6IVrVrqe2bLkBfLMWp6d2Aw1yCQlSp/rQlIKThZmF5VvZBESsaNK0KpBebTHuZGzNeGo8o0s8sJWwcGIN5uxrJKJs/KNrFFvHI58ZUptIha/oVCmy7hQ+fOKBLkHgD2uMe+C+rNr2DKqiqY4jY4XX3LqaDrckOhY70FWHF3WlzKXYXKDJKFe37t2GslYVhmXl+zJ9Yhenb/m1KWb739xjquc3PxmMTm5+aKNpy7dfHX+GqOL6i/OcaV0Idp46lIHdZE9YuTV6opDOb9g9PNDOb/40+QcoxfT+E+Tc4xbyL4TbawG7oc/2rb3YF2DUca2PdDff/fu3bvd3SUrVn1cfzF++4fPkKzZe0xj44CMKjwSW79uOsko3nCibd+e4lGTPozNyy/NXsgz66TW4tYzu/YUjyLTi0607TtxZHaGODxOLiab4sBiLsSlYL3zXGwozBpVeEQjQa4LsUFFtIaxrCa0bsXRS5qUcc2R2RmGW2YoSGRyQ2EWoYv3FI/KmP5MBpMdDeMEYzMuLzbNOFOceUWCvANgvh2RvAzx7CmevS7+jvCPBHtKWb+iJ4vGn7Tic06dZjrRseaDzD+6rC/tXIbJDZKFemS28T5yHnCPas6CtWebb22vv8xVTm7+JTE5ufmijWebb81ZsDZlLrJHjGzZtvHYjPFHZzx7dMazx/LGH5sRk9FFTm7+ymlTTTPH6Ja88eSzk+2s7vU9ePzDw8ePv3/0cODxD+HHj394/Pj7//v3/fCD+w/u3w+F+np6e3p7e0J9vSUrVtUcuhy/fdtYkvXqX01jw+Rfi5+gn44mbfusfDrJKN54sn1jYdbY8pgd+eVnJ7eNjX3Gou7aRdbi15MnCo/FR2KwYFg5trz9s5PHXs0ghBCSMX1shikXY6bc9LkuxKXgeG9fNslQqEGmL+MnyAbDujAsizeojjY2ltSEV/DB1Ay5GL1Pms6G9ERhsdHgskkxI1TLJkXvo+GQsIVi0oyGyqRvCE+eYGxMtzC3gyl+RvHG6N6xk7KMtzj+RJlOKd8v9xAa4k9W8bmnTpqOOWDdB1lwdBlfurkMkxskCdX0EEUveW+MHlP+gnWN1+7u+aqVqyWrP5D83faS1R+INjZeu5u/YF3KXGSPGHlt99aTr085+fqLUU2JXk5ZnZdHDa7Oyzv5+ovMzBS6hfzt9E1WxctXcn8D+Tvvlq1cvW65YWbNxp2fHPmWa8Sito3NKN6ke2nVmqe0bSx5qdjhcg1xFf+ajK1wPwwnbse2sSTr1U9dD9he8RM/dSk/t58WP0FeKh4uN2ho6jeLyi/e6HXc7MUbvb9ZVJ4yF9kjRrZ/vvvs/FcTF/n7mQ5Wnx6//smRqzrafbT5b6fauUYgvipeIj8tqXI9DB/p05Inhk7Ftv+KPDXnU9fDGC7FL/41sfi44QZ5Tr9dXHG5I7T/my5ndbkj9NvFFSlzkT1iZGfdF43L5jYWzW1aNrepaG4j1bKCxmVzG5fNbSwqaBocFzQuK2gsio6LBhXZRT7/ugNKkfaVPEEIIU/N2ed2JL7RV3N+OsQqtv1XvknHv8WPRB7hpWLcIJ+rcPnm+lOXrwT7nVX9qcuFyzenzMUL//FfB6s23/lXIHGRL84GIQiCIMib2nagqXB51Wtv/dlZFS6v2nagKWUuNm/54vm0p535/7b3n+uEIAiCIMgXIv/8pguCIAiCIF+IfNlwC4IgCIIgX8jctrcCAAAAwKtw2vZrAAAAAPAk/LZNAAAAAJBywuHwjRs3gsFgd3f3PQM9PT2Rr7K2HTAgmjEheSlxHDSepDgDPBz34iApq4PjLojGaQQAAN/hQNs2WZS/S/rlPTrZcRovk+HFKZLXto3GE3Qh3462DQAYSqS6bScJo1OPv017PLxU4kgplEZQcADAUCJ1bZv7aTgQD3e9xCbXqcSFMh6deRL/MVG0XjNUScxcR5JgkpSvzryNOrCRJ+6X69pSSAAA4HFc/ia58VJnrGM2kXGy4yTiDkcvrbo2mvJRHbgrbdhXutOPBwAAvE/S27bkfZk41wYCDCKPyvmkxslu4WYhWW8aB6Sf/r1cB+5Kx+O3FA8AAHgfUdsOhUIDAwOhUCihti1vQpLFVtuAcr3VN/3ktSvJMrZXWXVnu4elvg7clTbit50yAAD4EW7b7uvrGxgYyMjIGBgY8Hfbtm1fFDnFXpzsMna7jRJZWpxIHWzb4SIqsiX7orpJvAAAgH9h23akZ//oRz96+umnp0+fbv/ntpUvEY23Y5MREZp22C3yea5rkS/9OOV14Jo1BaMMz16+OnXgrrdaBwfjNL6k6QIAAPyLqW1HevaPf/zjcePGLV68uKyszP3fkuaFt10bbSkZrgEAAAxzTG17YGBg8uTJCxcurK6u3rt37/79+11u2975wORKJN5JHwAAgBfgfto24v6nbQAAAABEsPkDYAGGiDnlR0OnPji69RkUn30tgXJFUH7XJElVYp9Tj98L70eYGlCHCMl+Lhy3nBrst20S/494qcXUtG1nTfnCL4uDlXTEjsh4ssvlkdshJ2XPhdyyx2uV1NPi8dyNeOdNJgV44bnQ3JKMSGzg499JPszbtlNhJDsdv9t3imF+XF0HdfAmfnkuPHV+kti22T/mU9j1+kUJxCO3E2Dwpl/RYqv2jZfJiNN23SzFI7oUGbcUvzxIzTit2pfkogxe5FdiU5IaNxjWoMm1xKnV+jgyL6mPpAhKU47boZeml0TzNvI1TiqzkMfDNWIpL2X8JvsBBrkdG/PyUliN3/QSd5mNOEXBiEhW2w4IjpEyT3m4ovXKsSker/m1OpaEbfLFrtGxYyMeEcYwLNVB04Wl+HWMJHhfLMUpejUZ9Re5sOraaMrxuiW7DpJJHTvGxJOaQmrqwB0HosjtS/bK1xvtK8NOcR0081WGZzVOq/En95vk7AKdGQnyVI2Y1piqabVMzvqVrGfjEYUnnxelafIrsiOKU+JXhKgs8tzZZTr25U6tBqm0z62PZpymLRKnOmNNv1ynkkjYsem+SOogCk8edmrqoLSvNGKqA2FKkWAKqakDN37C3F/9kAIMpvVKs5Jodewr008wfpERbt1YO/J5/UTC4fDp06f37NmzKZ6qqqrI16S3bf1YJcaVZrll1XedDL869rkLNF1r2td0Z3WB3LWynvJyKSPRuUeW1usULREXEvs6Y02/3JckkVgti753zflk18GqHbqGfjUNnEohNXVQbrealyQG0UvysCVOLXmRr7Qdv3Gjjh2deZ0UwuHwnj172tvb70eJ/Lh2d3f37dvdt27ddud3kosQrVeOJWX1gl+rY5FNUTpW7diIR4SoLFbzUtpPJM5Eck+kDtxXk+eXRA8kEdfZkjvH65aCOiRix2hEx6btFDSN0EuKPH5LMdjIS3M914UyAM3gE6mDTvw6806NRYTD4Q0bNtCG3dcX6untvXev58aNm9eutbV8d40caLhFZWzbAQOmHCTRsLu4diQYFyvtSC495VdUNHmcIjvKxaJd3PWa81xMK5V1MK7RdGE1fh0j+nFarQO7izsvKhq73p5frk2JfYlH0UuJzCtdswvkdTCZ0olHYkESRkB6fti9ynmRQWVs8hRMfiVFEL2kE7/SiOlViX1lqHIXXI9c1zqlkJhS2pHUhx2LiLTtyCfsUCjU09N79+69O3e6W1quXbnSfPHSFWHbBgC4iOY7lEfMDltE9XSkzlbf7p3y66AdYAPatvv7+3t7+yI9u6vr9pWrzRcuXG5oOE8ONN6iQtsGwAtY+mzhutlhi6WPXM66SHxxCuwAexjbdn//QH//QCgU6u3tCwa72ts72tra0bYBAAAAr2Bs2/fvP/jvn/1s9iuvLFq4MKKK8nJvtW2dP+Lhz4AAAACGKqa2nT9nzodbt34Wpa6uTta2XemOKWjb6PoAAAC8ifqb5LWNt6jYf0me+oiT7Rcf1gEAAHgW9TfJaxtvU2n+x53UOvuSflMUref6lWyxvRj9GwAAgNdQf5Oc27aJ4FOpqG1LWjsXS38U0NyrM9YMDwAAAHAFjW+SN92m0m/bpm7tbts2oowBbRsAAIBnUX+T/GDT7Yj827bl9vVfAgAAANzF1LaXl5Ts+/TT+ijHjx+Pte2DgrYtaqui9ulW29aMR5QXnUFTBwAA4Bbqb5KL2jZx6He0iuCuNxnXb8OSHixq/PrzAAAAQGpQ/3LTuqbbVK7/uhURkrYNAAAADBlo2478PyJ37nTfunW7s7Pr0qWrTU0Xz51rJHXnb1N5tm0T/JpcAAAAw4BI2+7v74/07K6uW8Fg182bwaamC+fONZw+c9Y3bRsAAAAY8oTD4Zqamvb29t7eyH/Zeef27Tu3bt1uafnu6tXmK1e/JfXnb1OhbQMAAAAuEg6Hjx8/XlNTU/mXSq5I/fk7VGjbAAAAgIuEw+EbN24Eg8Hu7u57Bnp6eiJfyaELd+qjEv3cNsYYY4wxxt4ZgyGMVtumEv0AmOmsYB7zmMc85t2dB0MVddsOXLhDJfmvRAAAAHgBt9sKSC4abfviHSp82sY85jGPeV/Mg6GKum0fvniHCn+3jTHGGGPs/TEYwthv2wAAAABIMeq2feRSNxXaNgAAAOAiaNsAAACAb1C37aOXuqnQtgEAAAAX0Wjbl7up0LYBAAAAF1G37WOXu6lMP7dNrXAvuTPyefoqd7HInQ3k8QMAAADeRN22v7rSTcX+uhXCNGnTPPWknKeX3HkjaNsAAACGJzpt+y6V/LekEWk71BkbSUHb1vkjAgAAAOAd1G37X1fuUiW7bet8ApbPazZgSdhcO9xkbfgFAAAAEkHdto9fvUvF/t22qe3ZbtuidqiZhsi4fL3ItcSmJF90bgAAAMkm0bYdIfG2TcfcvaaXuNhr82zb5vZyedtm1wMAAADJQN22T3x7jyrZbduIzhr5Ls1lxo6rDJLbtnUCAwAAABJH3bZPfnuPSucHwJQtXLKXCP4lubI7Wu3xOrFZbdto4QAAAJKNum2far5H5crPbbO7uOivFAXMBs9tz6L16NkAAACSjbptn265R4XfkgYAAAC4iE7b7qFC2wYAAABcRN22z3zXQ4W2DQAAALiIum1//V0PFdo2AAAA4CLqtn22tYcKbRsAAABwEXXbPtfaS2Vs2+y/psYYY4wxxtgLYzCEUbftb671Upk+bQcMGI1iHvOYxzzm3Z0HQxWbbTsAAADAk7jdVkByUbfthuu9VPi0jXnMYx7zvpgHQxV122683kuFv9vGGGOMMfb+GAxh1G27qa2PCv+SHAAAAHARdds+39ZHhbYNAAAAuIhG277RR4W2DQAAALiIum1faO+jQtsGAAAAXETdti+2h6jQtgEAAAAXUbftS+2hSzdDl9pDlwxtO8DgdiKE8P4hJRtnIqF6J1MlPgo1lXjz3HqHZJdluJXdqXyHW92AHI22fTNEpfMDYC7CDcM0mcq27WJNRKVwIRSP4cFz6xbc3JNdkxTU3FP31Kl8bdjxVB2Ag6jb9uWbIaoh0LYdt+/I4hTgtXjcwoPn1hVEufu9bXvtnrrVtr1WB+Ag6rZ9pSN0OSpl2w5EIcy5CRgwRmB1XoTO21Di8ehEYjKiWQelKcLUmRuY0qmOa5Mjky82Bklekvj17ViNXye1ROKxMS+PR56vMv4E7bMvscbldjSDkcTvSL7KvDSDJOLUbNvRjMdTdbBqR75YM3igRKdt91OxbVtyh4wviW6b1bENuHGmzK9kUse+7TjZSavpKN0ZS2ojTq4dZQCsO6sE4pHHYzUvSb6agSntWHKhaYfdYkpfxw5bUnlIychXtCYRI5pxWjVlyRcR1E3Tr34wovUBvfPgYN2ABHXbvtrRTyX6tG0kEIUwt9mIab3ITuIZmk6M3L6DR8rZx0ZzLPFuNTW5O+79tRQn1w5hjoppL7veKqK9krzYeJR2rMYjypc1KHlJHoyN+PXrENC+L3Ij8jrr29dJStOIzti2KVO+Epvc4mj6VQajNBKIv7/M7RImaM8vkKPRtoP9VPptW2dSZ0Hi91huwfSqg0fK2cdGcyzxbjU12+40N9qzQ7/avk2ivZplTMSafJmNulkKT6f+oi0SR1bvBdempn0dX8r7aNWI5n2xZMqGTZ17IfIrD0bHiMm1aK+DdQMS1G3722A/lSNtO5GxDUzb9R8bp/wmYt92nOwkN54EXSsX00uKJEIdp9wUWOOaeSnnrdZfWagE7RtnErFPxOdBVHalHU2s2idW8tWxacmOya9tOzZik9RZx7UjdTAaSSR+uV9TkYESm207YMBoTjQvecmGKX0CPFLg12QqEfvc4E3GRXlJttjzKwlemZdVO0TwNiG61MlL5NdGXjZMyUMignxFphJMmfDqZpphx6L1NpLVsc/uteHFXqgiv5bs0GXyUuvXmRuS3HsideCGoYxTspfNVxQnkKBu282d/VT4LWkukuKT7Yg7G+81QIfhVkwXD/9wKzXwPmjb/sDSn5E95S7FkQ9thlsxXcx3uJUa+Ai0bQAAAMA36LTtgebO/ubOgebOAbRtAAAAwEXs/0tyAAAAAKQY/MedAAAAgG9Qt+1/Xb0b0fGrd9G2AQAAABdRt+0Djbeo0LYBAAAAF0HbBgAAAHwD2jYAAADgG9C2AQAAAN+Atg0AAAD4BrRtAAAAwDegbQMAAAC+AW0bAAAA8A1o2wAAAIBvQNsGAAAAfAPaNgAAAOAb0LYBAAAA34C2DQAAAPgGtG0AAADAN6BtAwAAAL4BbRsAAADwDWjbAAAAgG9A2wYAAAB8A9o2AAAA4BvQtgEAAADfgLYNAAAA+Aa0bQAAAMA3oG0DAAAAvgFtGwAAAPANaNsAAACAb0DbBgAAAHwD2jYAAADgG5Rt+/8BWhtNig8TuQ4AAAAASUVORK5CYII=" alt="" />

 

说明

  继续往下前,建议先下载Demo。

 

1 Cp.Core

  核心层中目前只有一个类和一个接口。接口ITest描述了作为测试实例应该具备的属性和方法。CaseContainer用于扫描当前项目中的测试用例,生成上面的菜单。

代码中使用到的主要知识点为反射。

 

2 Cp.EmitStudy

  有了核心层,下面就开始根据我们的需求,进行分类存放测试实例了。Demo中,以Emit学习为例,那了一个新的Project,类型为控制台类型。

新项目的Program.cs的Main函数只有一行代码:

        static void Main(string[] args)
        {
            CaseContainer.ShowCases();
        }

  余下的就是写我们的测试或学习用例了。Demo中Test2为我模拟AutoMapper写的一段代码,用于在两个对象间相互浅复制属性:

 class Test2:ITest
    {
        class Model
        {
            public string Name { get; set; }
        }

        class ViewModel
        {
            public string Name { get; set; }
        }

        public string Name
        {
            get
            {
                return "Linq Assign Expression Test";
            }
        }

        public string Description
        {
            get
            {
                return "This demo demenstrates how to use Linq Expression to mapping properties between two object.";
                //return "此示例展示了如何利用Linq Expression将两个对象的属性进行映射";
            }
        }

        public void Test()
        {
            Expression<Func<Model, string>> exp1 = m => m.Name;
            Expression<Func<ViewModel, string>> exp2 = vm => vm.Name;
            var assignExp = Expression.Assign(exp2.Body, exp1.Body);
            var mapAction = Expression.Lambda<Action<Model, ViewModel>>(assignExp, exp1.Parameters[0], exp2.Parameters[0]).Compile();

            var m1 = new Model() { Name = "MODEL's Name" };
            var m2 = new ViewModel();
            mapAction(m1, m2);
            Console.WriteLine(m2.Name);
        }        
    }   

 

3 后续

  余下来要做的就是,写新的用例,放在当前项目下,然后F5。查看和启动都会比较方便。

  有时候我们可以为了学习某一个框架或一些代码自己写一些测试Demo,那么我们可以专门建一个新的Study项目。

  我们可以把此项目设置一个快捷方式到桌面,脑中灵光一闪想写程序的时候就点吧~

 

发表评论
用户名: 匿名