在使用xUnit.Net Framework构建单元测试或自动化测试项目的时候,无论是针对一些比较耗费资源的对象亦或是为了支持Test case预设数据的能力,我们都需要有一些初始化或是清理相关的动作。在xUnit.Net中,提供了多种方式来满足我们的需要。还是照例看一下本文要讨论的内容:

  • xUnit.Net 共享数据的方式(上)
  • Test Case的构造函数 & IDisposable.Dispose(上)
  • Class级别的Fixture : IClassFixture(上)
  • Collection级别的Fixture : ICollectionFixture(下)
  • 依赖注入以及输出日志(下)

  本文我们只是讨论前三个议题,其他的议题我会在《xUnit.Net 之 Fixture(下)》中讨论。

  首先,我们虚拟一个自动化测试中很容易遇到的一个场景。有四个Test case如下图所示:

  aaarticlea/png;base64,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" alt="" />

  可以看到,其中前三个Case(测试功能01,02,03)步骤如下,创建DB连接->打开浏览器->执行功能->关闭浏览器->释放数据库连接。而功能测试04仅仅是需要操作数据库而已,没有操作浏览器的需求。因此,不需要在浏览器中进行操作。对于这样的一个场景,直接能想到的方法是编写4个测试方法打上前面的[Fact]标签,每个方法中创建数据库连接,打开浏览器,操作,然后释放数据库,关闭浏览器。但这样的做法有很多的问题,比如会多次占用浏览器驱动和数据库连接这样的非托管资源。而打开数据库连接和浏览器驱动往往是比较耗时的操作,多次打开会无端的增加Test case的运行时间。

  那么,如何来设计测试步骤呢?这里,我建议满足下面几个条件(当然也是为了讲解今天的内容):

  • 在每个测试任务开始之前做一些数据的初始化工作。
  • 打开一次浏览器,完成测试功能01,02,03之后,在关闭浏览器。在减少创建浏览器的开销的同时节省了测试时间
  • 在应用程序级别统一创建数据库连接,Test Case 使用的数据库连接是同一份(或是统一管理的)。

(一)xUnit.Net 共享数据的方式

  对于之前描述的业务场景,我们需要在每个Test Case执行前后,一组Test Case执行前后,所有Test Case执行前后这三个维度上添加自定义的操作。对应下来:

  • 每个Test Case执行前后 : 在每个测试任务开始之前做一些数据的初始化工作。
  • 一组Test Case执行前后 : 打开一次浏览器,完成测试功能01,02,03之后,再关闭浏览器。
  • 所有Test Case执行前后 : 在应用程序级别统一创建数据库连接。

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAzwAAAILCAIAAACinA4YAAAgAElEQVR4nO29y3MkR37nOf8aZ6XLmnVpxRZ1ydZdOnJGMpOZLmTJVJJO0mUuJK21W6ZLs3tMK5WtbcNaQw631VVBFmy5FAsta3STQFUXgEIhE0gkMjNe7h578Cqnl8cjI1/IcI/Pxz5GIxKJyHj8wv0b7hFZ/6kAAAAAgM7zn3a9AgAAAACwGEIbAAAAgAcQ2gAAAAA8gNAGAAAA4AGENgAAAAAPILQBAAAAeAChDQAAAMADCG0AAAAAHkBoAwAAAPAAQhsAAACABxDaAAAAADyA0AYAAADgAYQ2AAAAAA8gtAEAAAB4AKENAAAAwAMIbQAAAAAeQGgDAAAA8ABCGwAAAIAHENoAAAAAPIDQBgAAAOABhDYAAAAADyC0AQAAAHgAoQ0AAADAAwhtAAAAAB5AaAMAAADwgDBDm1KIiIgYoH0mqNCmVPH4y68iAAAACJT9L79SRU/TWzihTalCKRVF0eDDA0RERAzSKIqEVEoVPYxtgYQ2ndiEJLQhIiKGbBRFmVD9zG2hhLaikKrIBaENERExZKMommcyzaWQSvVsljSU0KaUVEWaS0IbIiJiwEZRdB2LOJO5UH17NCGE0PZ6brSYZ4Q2RETEkI2i6HKWz1KZC9W3sbZgQluRSzVPCW2IiIghG0XR8CabJiITSvbstrZwQlsmFCNtiIiIYatD2w2hzVNMaJulgtCGiIgYsCa0pbkktPkHoQ0REbEnEtr8htCGiIjYEwltfkNoQ0RE7ImENr8htCEiIvZEQpvfENqwz04ScXg+L///+p6O00kitrTaqig2uKqI2B8JbX5DaMNg3DsYqaIw3n1wtPBPOh7aJomwt8hsVNdC2wp7HhF3IqHNbwhtGIan49SOC3cfHLVJD5sKbfcfnqmiuP/wbLMbtc4qqaLYP550ds8v6/7xRBXFNlb+dJzewl5C7IiENr8htGEA6pGeFTIToW1Xe35ZCW2IG5HQ5jeENgzASSKau157ntGOMg2hTacErZOc7KUNPjw4PJ/bk4P6zYfnc3t61JlANK/rtKdHp5pXz1kB8yn2sJb+0fksvRpO6NGfuHcw0j/q/9fbZT7R3q66/Ldwz9trYj7OfKIepVNFYS9E7xOtjoPONLFeziQR+8cTvQT955VHsPIQ7B9P7H3uzOrWVcvpOD08n+vdsr0bFhG3KqHNbwhtGIDN93jZmUB31ZVBzf5/J3I5f2KWtncw0q+XR9rsJej0YH5rJy0TUPSPzsDVwtBmr4+zDk7gWBjanFBlD0HpN1fmtoY97+xqvXpmIfYn2st3VszZh85OaM649p+Ud6ze4eWRtoZq0QGxU3cTIi4roc1vCG3ouw2RYlDV2duvVIY2vUA7gZk/0X1/+Yat5tBWXj3zSvkP7Tc7I0xmgfZq6yXocTI7Tywb2uy/NeN/lZvTcs+X/6Rhn5jw5KxYw3EsD/I1hLa6+OuEtuZq2eoTwYi3I6HNbwht6LvLRgc7eFWGNnt6zpnTrLuzqiG0VaYQ57PsP2xzm53zeuWE3bKhzX6zM8HqRMaWe748iGWvg/OH9mEy07J2aqwMbeVp67rQVreezko2Vws3wGEAEtr8htCGAdhwZ9XKoa3y5vpuhjZzZ5idctYPbS2/M6Vuz68c2uyNap4eJbQhLiuhzW8IbRiAzv34titPj5Zn6Ab1aaY8o7ry9Oiyoc2skpOf9H36dWveHNraPwzbsOeXmh6tnH61V0Ovf91O0DbMddbtycPz+VLTo4Q29F1Cm98Q2jAM9e1fzlDT3QdHzbfD1yUk57vHzAMHgzdvVDevlycKy/N9Zml64fb6rBPanPxn38JvJ4zyzf4Noc3sT/Pj/vHE/lt7rer2vLOrdeqq+0Szu+xdrQNT5SMalTvHfr95+Nf+VflBBH1onL1UVy2ENgxAQpvfENowGJ2v3nBihNEeQmtISPbSyg8Y2je6aU1K0H28M3Rkf4GI/fqaoc25Nb7yuVQ7Yto7pzm0DaxZVzvHlENbw553vlaj7nkLZ3fZn2v/iXndfA9IeefY3yHiDM7Zh8D+6PKhrKsWQhsGIKHNbwhtiIiIPZHQ5jeENkRExJ5IaPMbQhsiImJPJLT5DaENERGxJxLa/IbQhoiI2BMJbX5DaENEROyJhDa/IbQhIiL2REKb3xDaEBEReyKhzW8IbYiIiD2R0OY3hDZERMSeSGjzG0IbIiJiTyS0+Q2hDRERsScS2vyG0IaIiNgTCW1+Q2hDRETsiYQ2vyG0ISIi9kRCm9+Y0DbP5OdfPI4AAAAgVL54rENbJhShzT90aMulmmfyapa/uE6fjZKji/jbi/ibl4iIiBiA828v4qej5OQqGd5kU0Kbp7wKbULFmbyOxctJenKVPB3Fx8P4eJgcXcSIiIjotcfD+Okw/u1l8uI6vZzls0TkQkmlVJ9SWwihrSgKpZSQKs3VNBGX0+z8Oj27Tk/H6clVgoiIiL57Ok7Pxun5dTqc5pNYzDOZS6VHbfpDKKGtKOTrwbabWFzN8stZPppmo2k2muaIGIbDm2x4k69kNryhNUD02uxyml3N8us4n6UizaVQRb/G2cIJbapQSglV5FIluZynYpbK2av/IqL3ThP5g3s/eevdj1bzB/d+Mk3ENJHThGYB0VPFLBHzTMaZTHMp9DDbruPHLRNIaCuKQhWFUoWQSkiVS5ULlUtEDMFMqEyot9796Pf+5mer+da7H6VCpUJmUmVC7nyLEHEVhcqEErLoZ2IrQgpthR5vKwqllFKFVAoRA1BfiWVCrhna5plIc5lLKXa9RYi4svomNlX0MbEVgYU2w6uDioj+q29XTfN1R9puYpFkMhdKSiWl2vZqI+KW7DNhhjYACAOllH42PM7WHWkbz/N5JjMhZc++IwAAgoHQBgDdRV9Y51LN1w5to6n1FeqENgDwEEIbAHSXV6FNqFkq1gxtLyfpJM5ToYQkswGAlxDaAKC7KFVIpTIhp8m6oe18kk5ikehvCtj1dgEArAChDQC6iyo2Gdqu4zx9Hdq4rw0AvIPQBgAdQinnuU4lVZEJNV17evT8Op3EeZLp7+TUue27T9n1dgMALIbQBgCdQCn1J3//Lw3/qsHv/tk/rBzafudPf9iw5D/+u3/WGQ4AoMsQ2gBg9+iv9jh8PvzDv/zxnXt7K4ezZb1zb++dux//6tmFkL37l6cBwDsIbQCwe/S9a7lUv3z68p27H99Obrtzb++duz9+cnyR5DLXT5UqvsMNALoLoQ0Adoz5Bt00l7NUfPnN+R9sP7fdubf3/fc/3v/1i/E8n6YiyWUuFd+7CwBdhtAGADtGD2/lQsWZnMT5aJp98asX33//R9vLbTqxPfyPsxfX6fAmm8QizmQmCG0A0GkIbQCwY8xIW5LLm0QMb7KzcfLzX568/d5Wctude3tvv/fxZ09Ono3i03F6cZNO4jzOZM5tbQDQbQhtALB7VFEIqTIhZ6kYz/PzSfr8Mvnsycnb7294nvTOvb233//4k69Pvr2YPxvFL67Ty1k+TUT66p+3YqgNALoLoQ0Ado892DZNxOUsf3GdPrtMPv16k7ntzr2933/vR//61fPfvJw/HcVn43Q0zW5ioR9EYJgNADoOoQ0AOoHOTPpxhJtEXE6zs3H6bBR/8vXzjeS27xLb+ex4GJ+Ok+E0MxOjkhE2AOg8hDYA6ApWblOvctv1ZnKbldjmJDYA8BRCGwB0iG3kNhIbAIQBoQ0AusVmcxuJDQCCgdAGAJ1jU7mNxAYAIUFoA4Ausn5uI7EBQGAQ2gCgo6yT20hsABAehDYA6C6r5TYSGwAECaENADrNsrmNxAYAoUJoA4Cu0z63kdgAIGAIbQDgAW1yG4kNAMKG0AYAftCc2773Vz/lX6kCgLAhtAGAN1TktnH6bBR/+vXJ9/7iHz/59+e/eTk/Hs5JbAAQJIQ2APCJqtyWPBvFRxfzo2H8bBSfjVMSGwAECaENADzDzW2z/HySnlwlp+PkxXU6mmY3iSCxAUB4ENoAwD+s3CZnqRzP89E0G02z8Ty/SUSSk9gAIEDCDG26QUfEgJWykLLIhUpzGWdymohpIuaZTFdNbDvfIkQjQCVBhTalisdffhUBQD949Ch69Cj64v/9KpMqzVUmVCaUWDKx0W5AB9n/8itVkN7AJZzQplShlIqiaPDhASL2xQ8OHj16lAslpBKqkEpDu4F+G0WRkEqpgtgGNoGENt3yCknji9g7Hz16lOYql0qqQqqifWSj3cDOGkWRHjYmt4FNKKGtKKQqckHji9g7oyjSt7IJucwgG+0GdtiVqxrCJpTQppRURZpLGl/EvhlF0XUs4kzmQi11EzftBnbWlasawiaE0PZ6jqOYZzS+iL0ziqLLWT5LZS5U+1EJ2g3ssqtVNQRPMKGtyKWapzS+iL0ziqLhTTZNRCaUbH0DEO0GdtnVqhqCJ5zQlgnFFTNiD9Xd281KoY12A7vpalUNwRNUaJulgsYXsW+a7i3N5QqhjXYDO+hqVQ3BQ2hDRL8ltGF4EtqgEkIbIvotoQ3Dk9AGlRDaENFvCW0YnoQ2qITQhoh+S2jD8CS0QSWEtkBURbF/PNn2pxyez1VR7HxjEW27E9pOx+npON329u4djFRR3H94tvM9j9uT0AaVENo88+6DI1UUxr2DkX59s6Ft/3hif4pZ+M5Dm71ih+dz57e6Myu/3nIfoqfuJLRNElEuxc2GtvsPz5zTUC9856HNXrFJIup2y8IWqXIfopbQBpUQ2nxSRxY7ZEwSoX/cRmhb7W8Pz+dOO74p7ciog5fd0JsOoLn1b9iHG1T3ahvvVtc5LgF7y6FNH1y7zA7P5/rHbYS21apIB7u7D442vredyDhJhDnfD8/nphXStVrXKDXsw826jSmILZ3djoQ2qITQ5o06ptQ1QMGHNr35drqyV9LkuUkiGpr+5n24QQltt+kth7ZJIuqSWR9Cm3OKNaykGRpcah9uVkIbBAahzRubpyadtsmeUrEb7sqZi/KLdeHAvK6bLfN+/aPuJ2zvPzwrhy27Yzs8n5+OUzPpaS/NmXwpd0KVTWdzaFs4vXs6Tivna07HqR5FML91dn55EtlZTnlLnXTrbI49h6t3lz2XZO9S++PsjnD/eKIHEctlEJi3Gdqapyad0GaXk3MKlI9X+cW6cGC/7ixE15v9uaYsnVPDPsfNRpnT1izNaUbKp/OgPhjVhbaF07v2iWafI7qk7fbBXoizA53mSC+nvKXlhsXZHPu8G9Sc3eWPKx+schlso6oheAht3ng6ThtGsOyGxm6D7GRgt9qn41S/p/LFhaHN/H95IU4WWRjanJbdaUPNVtsfN7BaQ6cRbA5tzfvQnugZvNnl6P7ALNkeJ6jcgeXutrylDaHNGRE8PJ/rzSwfF71ilZug37ylqepOeZuhrVyHzuGwa8YUp13V9nHfP57o91S+2Ca02WeBvZByFlkY2uxCck5bs9WVJ52quifBua5rvw/1mWK3AE6bY8/GKmusvbwDB6UEVt7S5tBmn+l7ByO9meXjolfMvGJvgolry141EdqgEkKbNzZPKNS1j7pJMksot62VL5YfRNDtkRMa9Co5L64Q2pz1sTfEtI/lvFJ50d8c2hr2Ybnttl9xRlDslan8xLrQZr+nIbTVTTE7O6H8KfYrzV1jSN5maGserK2bHtW12nBwK18sP4igTw3nuOtVcl5cIbQ55epsiP709sPbzuVEy31YPqntVxrqv+6UqQxt9vo3hLa6KebyTig3v87BWuGuWUIbVEJo88b2oc15OtK0O+Yq025BKl9sM9I2sDoVp7lfKrQ5Ta2z5mb5Gxlpa9iH5U22m2anM7Zb88odWBnanC1tCG11fb+zkuVOpaGHC9jOhrbKGW1zetqFWvlim5E2rR3p6mpjYWiz3+xMsJrltxxpc0ae2u/Dyk02m+aUtF3tlTtwUBPa6q7Nmj+ubiWbrx5XvgGO0AaVENq8seU9bc6sRLlJMqNoDS+2DG0mr9jN4vqhrWHIcHv3tK0c2ip3IKHtNu3mPW3Kmg0vnwWVNzk5L7YMbSavNJfosqGtYciw+Z628gPa7ffhyqGtbq8S2iAwCG3eqBuXuqZQvTmk39AkVbZlLVsr53X9fmcMTN8s3PBZzaGtLnU1Pz268M8X7sOlpkcX7lV7OqxuS1eY63EObpvp0RUqzTtvM7SVv2vG1tSJUwCV/fqgJhuZF1uGNv1+ZwxM/9iQw5pDW8Mz4M1PjzY3Uwv34VLTo232qnO7RZtrP7VoerR8dpebU1Uzl91eQhtUQmjzST1Q5IxaOd/TZrfd5hL87oOjuw+OTCts3lP54qBdaHMecTCtZHke0779X0+7NIQ25zLdXkP7Lpm625zLoc15vKB5HzpDI3Vfmmpa87odWP5ukfKW2u93JpqdrTMPIpSHKBoeniC0band2Ct9h/P+8aT8PW3qzSdXzLGeJMKcHeY9lS+2CW3OIw7OCVK+yLGH0htC2/3S96iZNXSmPu2S08upHCl3Hi9o3od23ZafrTG/skNb5Q4clO6IqMxh9vvVm1MHztbpt1We3fZiyy0VoQ02BaHNM50HyytnAezHCOxGyn698s3Oi+VPN6876cEJGeZWHrsZNR9h3+NceUFf9/D84M1bbewOyXkO3/5DJ9Y07MPBmzch1Y0ODt5s+it3oP36/uvvASlvqf23zuW7fRN65RdD2AMt5p11819he/v/IoJz22hluLePoD3+VHlkG15sCG3l9KDevCJyKtz+Ugx71LYyyjjbWH5Yslxyzj189h86saZhHw7ePJ3rRgcHb4a2uvPFvG5/D4izpfbf3n945gzOVbZFztnt7JOGr/LZdlVD8BDaENFvu/NvjyJuSkIbVEJoQ0S/JbRheBLaoBJCGyL6LaENw5PQBpUQ2hDRbwltGJ6ENqiE0IaIfktow/AktEElhDZE9FtCG4YnoQ0qIbQhot8S2jA8CW1QCaENEf2W0IbhSWiDSghtiOi3hDYMT0IbVEJoQ0S/JbRheBLaoBJCGyL6LaENw5PQBpUQ2hDRbwltGJ6ENqiE0IaIfktow/AktEElhDZE9FtCG4YnoQ0qIbQhot8S2jA8CW1QSVChbZ7Jz794HAFAr/jise7eMqFWCG20G9BFVqpqCJ5wQlsu1TyTV7P8xXX6bJQcXcTfXsTfvETEUJ1/exE/HSUnV8nwJpuuFNpoN7BjrlXVEDwBhTah4kxex+LlJD25Sp6O4uNhfDxMji5iRAzP42H8dBj/9jJ5cZ1ezvJZInKhpFKqXf9Gu4EddM2qhuAJIbQVRaGUElKluZom4nKanV+nZ9fp6Tg9uUoQMUhPx+nZOD2/TofTfBKLeSZzqXQUo91AT12/qiFsQgltRSFfXzTfxOJqll/O8tE0G02z0TTHkBzeZMObfCWz4Q31EJLZ5TS7muXXcT5LRZpLoYqlRiRoN1rKSXeLrlvVEDahhDZVKKWEKnKpklzOUzFL5ezVfzEQp4n8wb2fvPXuR6v5g3s/mSZimshpQmGEoZglYp7JOJNpLoUekKDd2KjTRP7R3/7T//Kn//tq/tHf/hMn3ZKuW9UQNoGEtqIoVFEoVQiphFS5VLlQucRwzITKhHrr3Y9+729+tppvvftRKlQqZCZVJuTOtwg3oFCZUEIWK/dttBsN6pPuP//XH/5vf/uvq/mf/+sPOemWdu2qhoAJJ7QV+rq5KJRSShVSKQxG3admQq4Z2uaZSHOZSyl2vUW4KfXtPqpYvW+j3aj0u5Puv6xx0v0XTrpVXL+qIVSCCm2GVxWPoahvPErzdUfabmKRZDIXSkolpdr2auPtSLuxDd846f76Z6vJSbeyAJWEGdogJJRS+im/OFt3pG08z+eZzISUPEIPUA8nHUA3IbRB19HXnblU87X7j9HU+oZx+g+AGjjpALoJoQ26zqv+Q6hZKtbsP15O0kmcp0IJSfcBUAsnHUA3IbRB11GqkEplQk6TdfuP80k6iUWiH6Tf9XYBdBZOOoBuQmiDrqOKTfYf13Gevu4/uMUGoBJOOoBuQmiDzqGU84iZkqrIhJquPVNzfp1O4jzJ9FdW6i7ku0/Z9XYD7AxOOgAvILRBh1BK/cnf/0vDv2rwu3/2Dyv3H7/zpz9sWPIf/90/6+4EoFdw0gF4BKENuoL+loHD58M//Msf37m3t3I/sax37u29c/fjXz27EK+/RAqgJ3DSAfgFoQ26gr6NJpfql09fvnP349vpQu7c23vn7o+fHF8kucz1A26Kr5OCvsBJB+AXhDboBObLPNNczlLx5Tfnf7D9LuTOvb3vv//x/q9fjOf5NBVJLnOp+ApQ6AmcdADeQWiDTqCvtHOh4kxO4nw0zb741Yvvv/+j7XUhuvN4+B9nL67T4U02iUWcyUzQf0Bf4KQD8A5CG3QCc9Gf5PImEcOb7Gyc/PyXJ2+/t5Uu5M69vbff+/izJyfPRvHpOL24SSdxHmcy5w4b6A2cdADeQWiDrqCKQkiVCTlLxXien0/S55fJZ09O3n5/w1M2d+7tvf3+x598ffLtxfzZKH5xnV7O8mki0lf/0g5X/dAXOOkA/ILQBl3Bvu6fJuJylr+4Tp9dJp9+vcku5M69vd9/70f/+tXz37ycPx3FZ+N0NM1uYqHvieaKH3oFJx2AXxDaoEPo5lvfGX2TiMtpdjZOn43iT75+vpEu5LvO43x2PIxPx8lwmpk5GsnFPvQPTjoAjyC0QbewuhD1qgu53kwXYnUeczoPAAMnHYAvENqgc2yjC6HzAGiAkw7ACwht0EU224XQeQAshJMOoPsQ2qCjbKoLofMAaAknHUDHIbRBd1m/C6HzAFgKTjqALkNog06zThdC5wGwApx0AJ2F0AZdZ7UuhM4DYGU46QC6CaENPGDZLoTOA2BNOOkAOgihDfygfRdC5wGwETjpALoGoQ28oU0XQucBsEE46QA6BaENfKK5C/neX/2UfzAHYLNw0gF0B0IbeEZFFzJOn43iT78++d5f/OMn//78Ny/nx8M5nQfApuCkA+gIhDbwj6ouJHk2io8u5kfD+NkoPhundB4AG4STDqALENrAS9wuZJafT9KTq+R0nLy4TkfT7CYRdB4AG4STDmDnENrAV6wuRM5SOZ7no2k2mmbjeX6TiCSn8wDYMJx0ALuF0AYeY3chcSaniZgmYp7JlM4DYDtw0gHsEEIb+I3pQnKpMvFKQecBsDU46QB2RZihTbcpGJKLDrdSqpBKSVVIpaEeQtZHdr7TNqiUhZRKykJIJWQhpNI/7nzFblmAWyao0KZU8fjLryIIkf0vv1JFbSupU5oqCvU6w1EPYdNcD52COgwYj+oQwiCc0Ka76iiKBh8eYHhGUSTkq2RGPeCy9bArqMOw9aUOIRgCCW26ZRSSxjFYoyjS9820aR+ph+Bdqh52BXUYvF7UIYREKKGtKKQqckHjGKxRFOkn1IRUC293ph6Cd6l62BXUYfB6UYcQEqGENqWkKtJc0jiGahRF17GIM5kLtfAWYOoheJeqh11BHQavF3UIIRFCaHs9B1HMMxrHYI2i6HKWz1KZC9V8TUs99MH29bArqMM+2P06hMAIJrQVuVTzlMYxWKMoGt5k00RkQsnG20eohz7Yvh52BXXYB7tfhxAY4YS2TCiuaANWN443rUMb9RC27ethV1CHfbD7dQiBEVRom6WCxjFUTeOY5rJlaKMeArZ9PewK6rAPdr8OITAIbeiHhDa07X5nSR32we7XIQQGoQ39kNCGtt3vLKnDPtj9OoTAILShHxLa0Lb7nSV12Ae7X4cQGIQ29ENCG9p2v7OkDvtg9+sQAoPQhn5IaEPb7neW1GEf7H4dQmAQ2tAPCW1o2/3Okjrsg92vQwiMXoe2+w/PVFEY7z8828ZZbT6lzZvt9dk/nuy8SeqOtxPaDs/nZv9PErHZTXDqTRXF3sGo4f13Hxy1f3Pf7H5nuU4d7h2M7EN/98HRNvbh6Tg1H3E6ThveSbtUZ/frEAKjv6FNd892UNtSbjs8n+vGsbnT1c203SCejtONt486B2y8+9crv6WuRXsLoc0JansHo83mNh3aTI3tH08aSk7/1j5Sk0Rs/MA5q7Qp9cpvdpmO3e8sV65D3VyYs0mfs5s9ufQy7aC2fzypzG1et0tbKm/b7tchBEZPQ5s+mW9n6EK3GqfjdOG17OH5fNsrQ2irU4f4re78chdSN26hD9MtDGkQ2rbHanWoT6Wt5ozBhwen47TlBYnX7RKhDcKjp6Gtuc2yp7Hst9nTVXb7orsordPAmdGa5lijl9AQeuxpOzv86WE8ezLFXsgkEfZa2etplrN/PNFDOObPnR633J46O8eeZLGjhv1xzgiWbkmXmpXeamhbGJLs/W+/zbzulJPZ8/YGtg9tCxOkvc/tkluqHuyNsl/UQynq9Zz+svVgb7v9zrp6KFfgZuthV6wW2iaJaLi6q2ua7NftAqus2/aXrAvbpeZjWrdWpnpNE1Rul8qtRLkJdU4fu/DqyntQmno2f77tdglgI/Q0tDW0jPcfntmtzyQR5my32wjznsPzuf1+pxM9Haf6x+ZY0NxJ6zbOXiX70+0YZ4dRe2zv8Hyu26Byj6tbTKfBbeik7Q3cP57oLSq3p3rFzCv2JphGs82RWqFx3PjI6+H53Onw9M60d9Tewci8xz7Q9sBJ5fRoZY/YfFFhF4D+OPtAL1UP5RzpLGG1eiiPtDXUQ7kCN1sPu2K10KbqR7bqmibniFQecbv9aT+Y19wutT+m9nLsBnP/eKJXu9wulVuJ5tBmN+l7ByO9Z8rl7dyTYG/CttslgI3Q09DW0DKWGybTFpRTl25ryo1C5W8beuKGX5XbHfsVJzLa7VrlhGxdaLObwoZOum7ay2lPy59iv7LaBNBWQ9tSq9S8N/QYg/2K6VzLDyLUFWHDRUW567JfWbYe6kKbs0XL1sPCwbnyQpadW9X/yCIAACAASURBVO9+Z7mNEV9b0zRVzi3qI+tcR+naaL/DG9qlNse0ssycEq1bWvmUbAhtdfMYbca2V8iyftUhBAahrUJn/Ny+LnRGzsvdsH2t5rRcDY1CQ+NYbo/sBs5pAe1Gyqyb3UjVhTb7Ext63MoGt7ySlbeSLGxhN9U4biO01U0Bq6oJ63I91F33140wNYS28vFq6BEX1kNlaHNWaYV6aOizy/Ww2g1w3e8stxHa6pomU3XmtHLeab9/I6FtqWNq14y5ycRugetCW93FScsSclayMt2aa6ptt0sAG6Gnoa2hMSqPnzvvNO1jXctlNwd1/Xflh1a2FyuHNqftbp4eLa9Mm4+rW0nvQltzZ1mejiznYPNi3S5qODrl+mmYllo5tFXWA6Fte2z8nraFTZO+tFh4E+1G7mlbObTZf+4kOUIbwEJ6Gtoavm3Bng+tbBntk7/hoafKRq2uM9ZvrgwNS02P1oVI58685tDWMNfZ3DguNT3aqdA2KCUzW2dbKo+UM/dUuZz2oU2/XllXS02PLqyH8vx+ueBXqAf9J5VHv/1CNlUPu2Kdp5grz442TZM54s3Xk2rRF7PZS2t4wLnlMa1rJ+0p+4WhrWGus65JKZd3eXNu7WISYCP0NLQNXl+V2uezftzJvrjUp7FuGe8/PLNvdDV/63ypkrkHtrJJLf+h+ZX+XOfJRP1j843ndZ20WbgzjOSM9pW7TPv9ZhjJviAu33hevnZveHiim6FNb5qzM83jkPat/WbnnI5TUz/mPeVvwDJva54edfaY7rydXap/tJfvHJFl66E8xFiu2xXqoRxGG+qB0OaoR+idISXzWHe5aTJtzuDNsTG9HLMQc3RMYdhVuncw0j86qbGhXWp/TO3QNkmEWbhdPE67VNlKOO93mrXygwiV5W0vtvyAFKENOk5/Q5tpWYz2EwPq9S0g9n3l9u1Kdm9a+X0cdVeopt1xmryBNWXgtEeDN++pcr7ioa6Ttm9qKbeG6s3vAXFW0v5b5yrZdNtOxDE7wbyz7mtKuhnaBlZ/6Wydvcm6HpwEo0q3ptnH0eyQ8h2QTrZTVUOelSVnr2dD5GpTD+YsaJjeXaEeTMU6T+qVN5zQVta5M9IJGeWmyW4fylm5fNDLVeo8gFwe4qqrtzbH1K4Ze2nlZsGsZ2UrYf+tvqayV8ZeybryHrzZ7Nc9tRNSHUJg9Dq0oUfyb4+ibfc7S+qwD3a/DiEwCG3oh4Q2tO1+Z0kd9sHu1yEEBqEN/ZDQhrbd7yypwz7Y/TqEwCC0oR8S2tC2+50lddgHu1+HEBiENvRDQhvadr+zpA77YPfrEAKD0IZ+SGhD2+53ltRhH+x+HUJgENrQDwltaNv9zpI67IPdr0MIDEIb+iGhDW2731lSh32w+3UIgUFoQz8ktKFt9ztL6rAPdr8OITAIbeiHhDa07X5nSR32we7XIQQGoQ39kNCGtt3vLKnDPtj9OoTAILShHxLa0Lb7nSV12Ae7X4cQGIQ29ENCG9p2v7OkDvtg9+sQAoPQhn5IaEPb7neW1GEf7H4dQmAEFdrmmfz8i8cRBMkXj3XjmAnVMrRRDyHTuh52BXXYCzpfhxAY4YS2XKp5Jq9m+Yvr9NkoObqIv72Iv3mJvjv/9iJ+OkpOrpLhTTZtHdqoh0Bduh52BXUYtN7UIQRGQKFNqDiT17F4OUlPrpKno/h4GB8Pk6OLGP31eBg/Hca/vUxeXKeXs3yWiFwoqZSqbx2ph4BdoR52BXUYsB7VIQRGCKGtKAqllJAqzdU0EZfT7Pw6PbtOT8fpyVWCXns6Ts/G6fl1Opzmk1jMM5lLpbtD6qGHrlYPu4I6DFW/6hBCIpTQVhTy9UXtTSyuZvnlLB9Ns9E0G01z9NnscppdzfLrOJ+lIs2lUMXC61nqIVxXqYddQR2Gq091CCERSmhThVJKqCKXKsnlPBWzVM5e/Re9VswSMc9knMk0l0JfzlIP/XWVetgV1GG4+lSHEBKBhLaiKFRRKFUIqYRUuVS5ULnEIBQqE0rIYqmWkXoI1pXqYVdQh8HqVR1CMIQT2gp9XVsUSimlCqkUBqO+WUQVy7WM1EOorlYPu4I6DFW/6hDCIKjQZnh1LmFAUg9o6yM732m4cQFumTBDGwAAAEBgENoAAAAAPIDQBgAAAOABhDYAAAAADyC0AQAAAHgAoQ0AAADAAwhtAAAAAB5AaAMAAADwgDBD286/cRE3LsWAWn/Z+a7DjQtwywQV2pQqHn/5VQQhsv/lV/qfcaQYes6ylbBzKMWA8a4awXfCCW1KFUqpKIoGHx5geEZR1P4fZqYYAnapStg5lGLY+lWNEACBhDbdMgpJ4xisURRlQrVpHymGsG1fCTuHUgxej6oRwiCU0FYUUhW5oHEM1iiK5plMcymkUo2zERRD2LavhJ1DKQavR9UIYRBKaFNKqiLNJY1jqEZRdB2LOJO5UM23AFMMYdu+EnYOpRi8HlUjhEEIoe31HEQxz2gcgzWKostZPktlLlTDNS3FELwtK2HnUIp90JdqhGAIJrQVuVTzlMYxWKMoGt5k00RkQsn620cohuBtWQk7h1Lsg75UIwRDOKEtE4or2oDVjeNNu9BGMQRsy0rYOZRiH/SlGiEYggpts1TQOIaqaRzTXLYJbRRDqLashJ1DKfZBX6oRgoHQhn5IaEOtL90kpdgHfalGCAZCG/ohoQ21vnSTlGIf9KUaIRgIbeiHhDbU+tJNUop90JdqhGAgtKEfEtpQ60s3SSn2QV+qEYKB0IZ+SGhDrS/dJKXYB32pRggGQtsSqqIw7h9Ptvop9x+etVwTVRR7B6OdN17btmuh7XScmv1/Ok43u/D7D89aHuLyO+8+ONr5wdqqvnSTt1aKdx8c3UJrcHg+Nx8xSUTleyaJuJ1Gsjv6Uo0QDIS2Vu4djJw26HScbqNJ2jsYTRIxScTh+bzhbfbKlNctSLsT2nQfaQe1/ePJZnObjmImuO8fT+pyvPNO3bM2J37f9aWbvJ3QpmvDDmqTRGw8tzlBTTdT5bfZDZeuzOZ2LAB9qUYIBkJb2zbrdlofnQV1Q9y8Pk6CrLv2DcbuhLZb2NtOFBuUjnjzO8PuKX3pJm/t+mHbF2z6SqDNO52rzfZ/6K++VCMEA6FtsTpCNcw61U1OmckCuyGz57Ocvl83wXcfHOn/abhcdlpqu3HUf6g/2nyuPbXhjAnpgbrydIY9/WeviXndXk7llu6kcdx2MejD13Bo7F1dPkblg15ZPOuEtkki9KExv3IOoj2H5SzTPuhmZZzZN6dcnYVXvriTStg5txDamlNR3YGzq84uALspMGf3UrnQCW12yzlJhB6Qtheu31B5XtjtpL3Munap8vyqbKz6WY0QDIS2dVtGu3s7PJ+bJuN0nJqW4vB8rrtV3Sya9ztjNvvHE/Oj6XrrPrRupK0uZtkNq3mzXh/T5U8SYVpYZ5pDL9DewP3jiX6xckt31ThuuxicPVYuFXNc7DhlD53uHYz0e5xobvdwldOjlZcNDSNtptuz/7DcH5sDbVfR/YdnTvIzG2hfHpiNtcuv/OJOKmHn7HbQVx9c+53muNtn9+k41eXhjO470b9l/m4YadOXCuXLGLsxNG92PvR0nOoKrGuXKs+vysaqt9UIwUBoW6tldNQ9ermVtBs1u9lyekT7t83De3bz59zUoqoG9uxO3X6l8uY5eyucbbHbwfJvt2pHQtvCYVfnMJU7FePh+dzZb+awlh8vqBvCdI6v7vns5Gf3VeXVMK+U68Qs0P5oO2hWDsC0H5XZdiXsnFsIbc2Xds6Bti8Iy+XklIq5vGy+Simvj1myc6+ts6rlyQT7lcompaFdqju/buGmEV+qsQ1fP5/+9Mnop09G//brsXnx33491i9+/XxqXtSv/PTJ6Gyc3s7SwEBoW2xzaHPmIJwu0+nDnHcq60FRp9dsnpWo/ETzq/KUh/2Ghf2uPWfhTJeYja2c8N1qb+1LaLOnb+x9Up6mcd5pv79y/KyyCJ14Z7+nvJByN+b0zeXtcp4HVNY4rqkT+yMqX9xJJeycnYe2cvS3D7qqmdR2GpZlQ1u5ZTO/ar6YHFjNUWWsbGiXBlXnV2Vj1dtqbMN/++S53qg//++/MS/++X//jX7xv33y3LxoNv+nT0a3szQwENoWu3ByynmQ036naR9189SQbOx7oSr74MrWbeGvVg5tDTukfJtUeUt31Tju9p42e+q5vHtNL6JfbBihLHdpdX1n3QhZ5a9WC23NfZ6p24Uv3nIl7Jzd3tOmD6gz+W6/wWSg5pto17mnreFXK4e2hk93zi/7gxrO2Z5UYxsIbV5AaFusk8xsnRH7hT1fQ6NW/oiGa9z2oW3l6dGFM4B1879buq7tSGgbvHlbWPlXdt9QeZhMcmqYvtlSaFttenThBFxll7/wYZptV8LOubWvIqrcyfZ8aOWhd0q0oUlxLkUabB/aVp4eXdgu3fItHL5UYxsIbV5AaGulbvKcu2j3jyf2uIu5ztPNimki7UtV5/6zuw+OdPtS2R6V/9D0qe1D26Bq+Md5eqv8IIIzyHd4PtfrbN4wsG6eq9zSXTWOt1AM+qDbfcDewUj/aE9X6dlPM6hm72T7Fm+7JzO7t3l61D6gS4U258kD52rEWaxeyfK3AJqQZ7bUBMrKF3dVCTvndr6nTQ+2OQ8e7R2M7P1vRpsGVpszeHPY2PmGP/tQ6rJxZt7thst+MLllaBu0eECq/CBCXbtUeX5VNla9rUYIBkJbW50bRJznAMwIvMle9vPzdnthv64an1oYWLfTrRPaBm/ePuU0Xvb6239Y+cUQ9k5wuufKhd9+47iTfx7D6d7MTjNPltiv272Ocy+R3WXar6vSF6ysFtrKa+4M0tgH3fn+kfLr9oS+WU7lizuphJ1za6XoNCl1x8K0NnWnfMMXcDi1UZeulgptzho2fBWRc2FTXvnK86uyseptNUIwENrQD7sW2nBX+tJNUop90JdqhGAgtKEfEtpQ60s3SSn2QV+qEYKB0IZ+SGhDrS/dJKXYB32pRggGQhv6IaENtb50k5RiH/SlGiEYCG3oh4Q21PrSTVKKfdCXaoRgILShHxLaUOtLN0kp9kFfqhGCgdCGfkhoQ60v3SSl2Ad9qUYIBkIb+iGhDbW+dJOUYh/0pRohGAht6IeENtT60k1Sin3Ql2qEYCC0oR8S2lDrSzdJKfZBX6oRgoHQhn5IaEOtL90kpdgHfalGCAZCG/ohoQ21vnSTlGIf9KUaIRgIbeiHhDbU+tJNUop90JdqhGAgtKEfEtpQ60s3SSn2QV+qEYKB0IZ+SGhDrS/dJKXYB32pRgiGoELbPJOff/E4giD54rFuHDOh2oQ2iiFY2lXCzqEUe4En1QjBEE5oy6WaZ/Jqlr+4Tp+NkqOL+NuL+JuX6Lvzby/ip6Pk5CoZ3mTTdqGNYgjR5Sph51CKQetZNUIwBBTahIozeR2Ll5P05Cp5OoqPh/HxMDm6iNFfj4fx02H828vkxXV6OctniciFkkqpmtaRYgjVZSth51CKAetdNUIwhBDaiqJQSgmp0lxNE3E5zc6v07Pr9HScnlwl6LWn4/RsnJ5fp8NpPonFPJO5VLo7pBh65QqVsHMoxVD1sRohDEIJbUUhX1/U3sTiapZfzvLRNBtNs9E0R5/NLqfZ1Sy/jvNZKtJcClU0X89SDIG6dCXsHEoxXP2rRgiDUEKbKpRSQhW5VEku56mYpXL26r/otWKWiHkm40ymuRT6cpZi6KNLV8LOoRTD1b9qhDAIJLQVRaGKQqlCSCWkyqXKhcolBqFQmVBCFu1bRoohTJevhJ1DKQarh9UIARBOaCv0dW1RKKWUKqRSGIz6ZhFVLNEyUgxBukIl7BxKMVR9rEbwnaBCm+HVuYQBSTGg1l92vutw4wLcMmGGNgAAAIDAILQBAAAAeAChDQAAAMADCG0AAAAAHkBoAwAAAPAAQhsAAACABxDaAAAAADyA0AYAAADgAYQ2AAAAAA8gtAEAAAB4AKENAAAAwAMIbQAAAAAeQGgDAAAA8ABCGwAAAIAHENoAAAAAPCDM0KYUhibFgFp/2fmuw40LcMsEFdqUKh5/+VUEIbL/5VeqWKKVpBhCZdlK2DmUYsB4V43gO+GENqUKpVQURYMPDzA8oygSUilVtGkeKYaAXaoSdg6lGLZ+VSMEQCChTbeMQtI4BmsURZlQbdpHiiFs21fCzqEUg9ejaoQwCCW0FYVURS5oHIM1iqJ5JtNcCqlU42wExRC27Sth51CKwetRNUIYhBLalJKqSHNJ4xiqURRdxyLOZC5U8y3AFEPYtq+EnUMpBq9H1QhhEEJoez0HUcwzGsdgjaLocpbPUpkL1XBNSzEEb8tK2DmUYh/0pRohGIIJbUUu1TylcQzWKIqGN9k0EZlQsv72EYoheFtWws6hFPugL9UIwRBOaMuE4oo2YHXjeNMutFEMAduyEnYOpdgHfalGCIagQtssFTSOoWoaxzSXbUIbxRCqLSth51CKfdCXaoRgILShHxLaUOtLN0kp9kFfqhGCgdCGfkhoQ60v3SSl2Ad9qUYIBkIb+iGhDbW+dJOUYh/0pRohGAht6IeENtT60k1Sin3Ql2qEYCC0hebdB0eqKPaPJztfk81KaFvBvYORKor7D892viYb1JduklJ0VEVxeD7f+WpsVl+qEYKB0NbW03GqikJ7Ok63+inNkevwfG7WRLt3MDK/JbTdQjHoMGS8++Bos8t3jm9DV+e8UxVFeT0JbTvh1kLbJBFtSmUd7z88s2ussqKa26UBoQ1gExDaFqtjkB3U9o8n28ht5oMmiWh42+H53H6Dbk+3lyM7YndCmw7WJqjpo7bZ3GbHbn1861K48yvdcTqdZWD60k3eQinq2rCT0OH5fOPBSBeVHdQqcxvtUperEYKB0LbYhSlqU+osqBu7htERp3EcLOrXw7Ajoe12xq6co3k6Tus6v/Jx113sxgf/uqMv3eQthLZJIradinTb0uYygHapy9UIwUBoW7fNsqdN7beZyQKnIWuYVpskQi9hkoiGy+Vy4zh4M1naDaU9kWc+TseOujXcP56YP3F+ZSZi7NWzp062l247Etqau0l7b9tvqzwKgzdnlOy+bZ3QZs+POxcAplbN0vQb6o7s4M3yrjvodoSt26Lbr4Sds/Prh7qmqVwGpmzKk+ztL1kXtkt2s1ZZP7oBtNuf8vZW/qqyeuu2qJ/VCMFAaFurZTwdp6Y11O/UXbJud8zruvfSjYh5v36P6cJ1K6Z/1D3fUo2jvbTKPvvugyPTRjt9qh1EnHEa3b6b/7ffphdrb/Vgm6OSHQltDffl7B2M7F5w4VGw96dzJ2J5erTusqEyG5kDan+0XTb7xxO9QNN3mtVzCsM+mqabdyrZvKdhi26/EnbOtkvRaUAc65qmhjIwrZzd/rQfzFvYLpnQVlc/OnuZ88tuTPRynDXUi61slxq2qJ/VCMFAaFurZbTVLZFuJuzQZjdqTvNn92r2b5v76dVCW93nDqw23WlMnea1crxnkgh7UQvndrfdOG61GJYKIqfjVHc/lfvEzujlw2qPEDSPX64W2hqOl3mbE8eb62ThFt1+JeycbYe29kHEbprqxsPKY1T6+DZcpZTXZ7XQZtdteTRXr3a5zs0rle1Swxb1sxohGAhtC1wY2uxHt+x2oTwBYc9WlKeQnFap4QK3oXEsL8p8aGV75zSOlfHCiYCqNJFXtrehzZ7ZsY9++Sg4cz1OOFOl6dG6IqwLbeW8aGaL6vpFp5DKFx5OBFRvzvY2b9HtV8LO2Xloq2yaKsvAeaf9/o2ENqcsK+tnUAptJmlVRi6nyMvtZ90W9bMaIRgIbQtcODnlzAeVh6marwi1lR1eXT+91D1tdhNmT4+uENqcVa27At6SXQhtg0VhWr05U+y80z4K5XGshn3eEBbLrzfc0zawerjKebFB69BmttEks+Ytuv1K2Dm7vaetuWlyyqDhJtot3dNWrp/yG1qGNntvmB3SfFtwD6sRgoHQtlhV8+C6PelQ2TI6bVnDbFG5g2/op8vLabgjymnUnPlT51fN06OVLWbXGsfbGd6ojCbOjExlRje7unkeeZ3QZo8N132KWbfVpkftRTUn/h1Wws65na8iqjz7WjZNpgwariedm8kaXNguVbYVdtmsNj1qa5bQsEX9rEYIBkLbYstfOGRuObcbTT2OYm7/sh+JsjtIZ1ai7g6h8h/ad781fx+SefP+8cT+K2XNnzohz5nIs9fBHsArt8W6TTcrf/fBUdgPIpgDbWcX/aO9h/Vu0Xu17ijo5ZiF2G9T9dOjTifqvNP5njanR7QfH3amluzbtysLw44IewcjU8bOTUt1W3T7lbBzbqEUdYy2m5T944n+sa5pqiwDvRzntgen/OzcNknE/YdnTmpc2C6ZRNVcP/ZqmwU2PCBV2S41b1EPqxGCgdDWVlV1r5L94LpuJpwbR9Sbt/U4T6E3PLVgN2fl0KbenEVtmNC07+2wG2v9nXDO5pSXX/e9FZUTE6oDj9bfTjE4h8DsWLO39aib2XuVR2FQ/4UazvF1kpAT2mwrvyjLDmSVBWz/qnJivfwre83LE6blLbr9Stg5t1OKTpNS+Z0adtNUWQbO66o0nurcrGnfJVm+Ta2uXbIH0irrR79h2a8iqmuXmreob9UIwUBo66Plvrn7diq0BeOtzWluUF+6SUpxWW/tXosN6ks1QjAQ2voooQ21hLbtQSkuK6ENYCGEtj5KaEMtoW17UIrLSmgDWAihDf2Q0IZaX7pJSrEP+lKNEAyENvRDQhtqfekmKcU+6Es1QjAQ2tAPCW2o9aWbpBT7oC/VCMFAaEM/JLSh1pduklLsg75UIwQDoQ39kNCGWl+6SUqxD/pSjRAMhDb0Q0Iban3pJinFPuhLNUIwENrQDwltqPWlm6QU+6Av1QjBQGhDPyS0odaXbpJS7IO+VCMEA6EN/ZDQhlpfuklKsQ/6Uo0QDIQ29ENCG2p96SYpxT7oSzVCMBDa0A8Jbaj1pZukFPugL9UIwUBoQz8ktKHWl26SUuyDvlQjBENQoW2eyc+/eBxBkHzxWDeOmVBtQhvFECztKmHnUIq9wJNqhGAIJ7TlUs0zeTXLX1ynz0bJ0UX87UX8zUv03fm3F/HTUXJylQxvsmm70EYxhOhylbBzKMWg9awaIRgCCm1CxZm8jsXLSXpylTwdxcfD+HiYHF3E6K/Hw/jpMP7tZfLiOr2c5bNE5EJJpVRN60gxhOqylbBzKMWA9a4aIRhCCG1FUSilhFRprqaJuJxm59fp2XV6Ok5PrhL02tNxejZOz6/T4TSfxGKeyVwq3R1SDL1yhUrYOZRiqPpYjRAGoYS2opCvL2pvYnE1yy9n+WiajabZaJqjz2aX0+xqll/H+SwVaS5zqeTr9rFSqQohiyxX81RO5uJymo+m+fAmG96kwxvqwV/dShCq6PjIBu1SuPpXjRAGoYQ2VSilhCpyqZJczlMxS+Xs1X/Ra8UsEfNMxplMMvlHf/2Tt979aDV/cO8n00RMEzlNKAwf/a4S0lwKHdx33fI0Q7sUrv5VI4RBIKGtKApVFEoVQiohVS5VLlQuMQiFyoTKRZEL9da7H/3e3/xsNd9696NUqFTITKpMyN1vFy6rUJlQQhYe9ZG0S8HqYTVCAIQT2gp9XVsUSimlCqkUhqMspCxyuW5om2d6glWKnW8RruSrSfDCpz6SdilUfaxG8J2gQpuh4YYn9FGpCiFVtvZI200skkzmQslFN8ZhZ/WXne863LgAt0yYoQ1CQimln8KLM7lmaBvP83kmMyElD+cDtEapla9wONMANgmhDbqObv1zqeZrh7bR1PrucroSgEUoVazz9M8f/fVPXgc+zjeADUBog67zKrQJNUvFmqHt5SSdxHkqlJD0IQAL0KfemiedVIVUSt/Vt+sNAvAeQht0HaUKqVQm5DRZN7SdT9JJLBL9iP6utwugy+jEJtZ++ifJ5at/LWDXWwQQAIQ26Dqq2GRou47z9HVoox8BqEMVm3n6Z5qI199kxv1tAOtCaIPOUbrrWUlVZEJN154ePb9OJ3GeZK+7kDce6KM7AXgFT/8AdBNCG3QIpdSf/P2/NNzX/Lt/9g8r9x+/86c/bFjyH//dP+sMBwA8/QPQTQht0BX0xf3h8+Ef/uWP79zbW7mfWNY79/beufvxr55diNff3AbQc3j6B6CbENqgK+h713Kpfvn05Tt3P76d3Hbn3t47d3/85PhC3y7NnTcABU//AHQVQht0AnMPTZrLWSq+/Ob8D7af2+7c2/v++x/v//rFeJ5PU5HkMpeKO28AePoHoJsQ2qAT6OGtXKg4k5M4H02zL3714vvv/2h7uU0ntof/cfbiOh3eZJNYxJnMBKEN+ghP/wB4AaENOoEZaUtyeZOI4U12Nk5+/suTt9/bSm67c2/v7fc+/uzJybNRfDpOL27SSZzHmcy5rQ16Bk//AHgEoQ26wuvvhZKzVIzn+fkkfX6ZfPbk5O33NzxPeufe3tvvf/zJ1yffXsyfjeIX1+nlLJ8mIn31gBtDbdAXePoHwC8IbdAV7MG2aSIuZ/mL6/TZZfLp15vMbXfu7f3+ez/616+e/+bl/OkoPhuno2l2Ewv9IAL9B/QKnv4B8AtCG3QI8y/npLm8ScTlNDsbp89G8SdfP99IbvsusZ3Pjofx6TgZTjMzMcq/tAO9gqd/ALyD0Abdwspt6lVuu95MbrMS25zEBsDTPwDeQWiDzrGN3EZiA3Dg6R8A7yC0QRfZbG4jsQFUwtM/AH5BaIOOsqncRmIDqIOnfwD8gtAG3WX93EZiA2iGp38APILQBp1mndxGYgNoA0//APgCoQ26zmo9Cr0FQHt4+gfACwht4AHL9ij0FgDLwtM/AN2H0AZ+0L5HobcAWA2e/gHoOIQ28IY2PQq9BcA6dJ/4aQAAFjZJREFU8PQPQJchtIFPNPco3/urn/KcGsCa8PQPQGchtIFnVPQo4/TZKP7065Pv/cU/fvLvz3/zcn48nNNbAKwMT/8AdBNCG/hHVW5Lno3io4v50TB+NorPxim9BcA68PQPQAchtIGXuD3KLD+fpCdXyek4eXGdjqbZTSLoLQDWgad/ALoGoQ18xf4m91kqx/N8NM1G02w8z28SkeT0FgDrwtM/AJ0izNCmGxoMXikLKYtcqCST81TexOImFrNUJpnMhBJS/1vUiDQjq2udZWoSi9FNdjpOnw7j//Hv3z3987P/7/mvX8yOLuKTq+TiJrue5/OUc3CTAmiCCm1KFY+//CqCPvHoUfToUfTwUfSLR9EvHn2uffgoehRFj3a9btAd9r/8ShWtOj+akTLmLPu3h5//z198/j9+/vlPP/vi//qfX3z0f/4//+uf/x8f/tNn//zp4weffv5/f/b5z37++af/Fv384ee/4BzcKO0LGMImnNCmVKGUiqJo8OEB9ssPDgYfPhl8aP/3yeCDXa8VdskoioRUShXNvR7NSK3fnVC/HHx48Oos03508IPv3vmk9D+4AVsWMARPIKFNN7VC0tr21Q+slPbBweADOgx8wyiK9GxdQ7dHM7JAN7e98gcfld/MCbhh2xQw9IFQQltRSFXkgtYWESuMomieyTSXQqq6O+NpRhb7xgD2L2veRmLbvG0KGPpAKKFNKamKNJe0tohYNoqi61jEmcyFqruzm2akld/ltspwRmLbim0KGPpACKHt9aRGMc9obRGxwiiKLmf5LJW5UJVDFTQjS1h7wyiJbVsuLGDoCcGEtiKXap7S2iJihVEUDW+yaSIyoWTVXUE0I8vJ0z+368IChp4QTmjLhOISGREr1X3ezaLQRjOyhDz9c4suLGDoCUGFtlkqaG0Rsazp89JcNoc2mhHsoAsLGHoCoQ0Rw5fQhl5LaAMNoQ0Rw5fQhl5LaAMNoQ0Rw5fQhl5LaAMNoQ0Rw5fQhl5LaAMNoQ0P7j88U0Vx/+HZtj9okojTcbrz7d2eqigOz+c7Xw0su5PQdjpOb6Hg9w5Gt3P+4g4ltIGG0NYvdftuvPvgaLCF0HY6Tu1PMQvfeWizV2zvYFT524b9sH88cbZr/3hiv4HQ1lm3HdomiTBVYWpgs6FNn6e2euE7D232ik0SUbdbnJOl5T5ELaENNIS2HqlDiQ5qgw8P7j440j9uI7St3FdNErGl9tqOjLqfM7nN7nUWhjbzo96BTi+F3XR7oU0Xj120h+dz/eM2Qttq56kueHPub1AnMk4SYc6Iw/O5CWr63KnLbQ37cLO2yY63eVzaS2gDDaGtLzZcjvchtJU7LXsldYexcD84oW3wOrcxKtB9txfaGsaP+xDanBO2YSXN0OBS+3CzEtrAdwhtfbGhWXQanbrJjsrhqMoX6/oq87pOP+b9+sefPnlj6lbHo3JnYze7erRMz6qYnsOexDQvHp7PnSGxcgJbIbTpJZsX7Q6scs9MErF3MLLX0F6UM3ntHL7ytJGOjJXvR8cthbbmqUnnRKibnTevV77ZvFhXn/brzkJ0wTi3K+jTxwlbdm2bjXKq116IPiV1BTp3GtQFo7rQtnB61z5f7LN4/3gySUTdMLmzA52TSy+nvKXNDc7gzTncwevTv9zg1J3L5mCVy2DNAoaeQGjriw0DQnajf//hmd0smpbdaZ31eypfHLQIbfr/6xZir+fC0OY0fE44M1ttPs6oewJ7yauFNrvLad5dg9ctvn3Pk/mVE2R1Z6BXz95vekSwvLZ2dsSyWwpt5SqydQre1INd1XbF7h9P9HsqX2wT2vT/lxdSPo8WhjZVuhPArL/ZavvjjJVNjX5nZZhr3of2iTB4HcXsP7RnY82vKnfgoJTAylva3OA4t1jozSwfl4Zz2cS1ZUc9CW2gIbT1Qt3mNt9QUhlW9GX6oOaSuvLFQdWDCOZ10+SZVXIS3rKhrTzyVG49B1U5srzk7YW2uq1zxkjKjzXoVypD8Ok4LW97+wv3vrml0NacleuuXuxCLY8B171YfhBBl0dlfHdeXCG02SeCaQeM+tMrT5nKOxzssNV+H5ar2n7FOR/tlancgYOa0Gavf0ODUzfFXN4JDedyZcxtI6ENNIS2XrhUaKucRxhYEwF2s1X5YpuRtoE162G/Z9nQZm9UuVczy9/2SJtejr3ylXvG2TrTA1VGLvNms1110zRGQludXQhtziHTB8vMcVdOfLe5XawyNFSmk6VCm3NGl4vNhLaFI23OyFP7fVi5yWbTKh8Matirg5rQZm9pQ4NTefqXV7LNubzCDXCENtAQ2vpiy3vaygP7TtbRzXfziy1Dm4k1dhO2fmirGzK85XvaKvfMaqHN3hWqNKqHbdz5PW3KuqOrfLgrb3JyXmwZ2kxesc+19UNbw5Bh8z1teskNlxPLPiPVJrTV7VVCG/gOoa0vOreG1DU6zjxIwzSN0+7YL7YJbeb9zhiYM+vXPPXgNMENU4Rt+qHVQpt9NV8ZpOzFrjY9amuWcDtf3BqMWwptzY8Pm2PkTNw33FdQOQ+uX2wZ2vT7nTEw/WND/TeHtrrZxsGip0ed79ZZdh8uNT3aZq9OEtEc2hoanLrp0fJdGQ3nMqEN1oTQ1iP17IxzEel8T5s9aagbKfOYlfN45t0HR5UvDtqFNuf2L9PGlecx7QZdvTnvU24cne+is9fQHnuonK8pt6dOd7Lwe9rMRtXtGedBBOdLrew1t+8BMv9j7yt9dOzNrxwGQO32vvJDHwhn1KocrJ3jbuLFJBHmoJv3VL7YJrQ5jziYkijPY9pl6dyoUBdl7G00a+icSvZZVi5Ro1PtzfvQLmz7lGkIbZU7cFCacKjMYc0NTvlBhPLNJw3nMqEN1oTQ1i+dB9Qr/0UEc/+Kviq1Jz3NH5bfXL7WL3+6ed25i8Vu983kjvlc+061+w/P7Gvlyi7B3sby3dPOtpdfV9atMJWhzbZhQrNyz+g3mDWsnLEt/8q+y7A8qlG5Rei41X8RwfnuFbsGnKFlUzbqzUlPp1wbXmwIbeX0YP+5qTpTtPaXYuhVGlj15pSTs43lx33K9Vl526UZ0Xc+om4fDurP6IbQVrkD7dft7wFxtrShwRm82VaU94DzZcLlc5nQBmtCaEO8PbkRbVfyD8aj1xLaQENoQ7w9CW27ktCGXktoAw2hDfH2JLTtSkIbei2hDTSENkQMX0Ibei2hDTSENkQMX0Ibei2hDTSENkQMX0Ibei2hDTSENkQMX0Ibei2hDTSENkQMX0Ibei2hDTSENkQMX0Ibei2hDTSENkQMX0Ibei2hDTSENkQMX0Ibei2hDTSENkQMX0Ibei2hDTSENkQMX0Ibei2hDTSENkQMX0Ibei2hDTSENkQMX0Ibei2hDTRBhbZ5Jj//4nEEAODwxWPd52VCNYc2mhHoIosKGHpCOKEtl2qeyatZ/uI6fTZKji7iby/ib14iYp+df3sRPx0lJ1fJ8CabLgptNCPYMdsWMPSEgEKbUHEmr2PxcpKeXCVPR/HxMD4eJkcXMSL20+Nh/HQY//YyeXGdXs7yWSJyoaRSqtTp0YxgB21fwNATQghtRVEopYRUaa6mibicZufX6dl1ejpOT64SROytp+P0bJyeX6fDaT6JxTyTuVQ6n9GMYPddqoChD4QS2opCvr5KvonF1Sy/nOWjaTaaZqNpjoi+O7zJhjf58majm/Ryml3H+SwVaS6FKuqGKWhGsHtml9Psapa3KWDoA6GENlUopYQqcqmSXM5TMUvl7NV/EdFjp4n8wb2fvPXuR6v5g3s/maVinsokE0KPUtCMoDeKWSLmmYwzmeayuYChDwQS2oqiUEWhVCGkElLlUuVC5RIR/TYTKhPqrXc/+r2/+dlqvvXuR0muMqFyqaRcMEZBM4KdU6hMKCELEhsUIYW2Ql8oF4VSSqlCKoWIXqvDUybkmqEtzmSWK6GUpBlBD9U3samCxAZhhTbDqxJHRJ/Vd5il+bojbTexeD21tMRzdzvffEQjgCbM0AYAvqMDlpAqztYdaRvP83kmMyEl35UAAD5DaAOALqIHGHKp5muHttHU+ip5QhsAeAuhDQC6yKvQJtQsFWuGtpeTdBLnqVBCktkAwGMIbQDQRZQqpFKZkNNk3dB2PkknsUj0bW273i4AgJUhtAFAF1HFJkPbdZynr0Mb97UBgKcQ2gCgEyjz1QavVFIVmVDTtadHz6/TSZwn2esHSN94MpQABwDeQGgDgB2jlPqTv/+Xhn/V4Hf/7B9WDm2/86c/bFjyH//dP+sMBwDQfQhtALBL9Fd7HD4f/uFf/vjOvb2Vw9my3rm3987dj3/17OLVF82T2wCg8xDaAGCX6HvXcql++fTlO3c/vp3cdufe3jt3f/zk+CLJZa6fKl3me3cBAHYCoQ0Adob5Bt00l7NUfPnN+R9sP7fdubf3/fc/3v/1i/E8n6YiyWUuFd+7CwDdh9AGADtDD2/lQsWZnMT5aJp98asX33//R9vLbTqxPfyPsxfX6fAmm8QizmQmCG0A4AGENgDYGWakLcnlTSKGN9nZOPn5L0/efm8rue3Ovb233/v4sycnz0bx6Ti9uEkncR5nMue2NgDwAUIbAOwSVRRCqkzIWSrG8/x8kj6/TD57cvL2+xueJ71zb+/t9z/+5OuTby/mz0bxi+v0cpZPE5G++uetGGoDgK5DaAOAXWIPtk0TcTnLX1ynzy6TT7/eZG67c2/v99/70b9+9fw3L+dPR/HZOB1Ns5tY6AcRGGYDAC8gtAHAjtGZST+OcJOIy2l2Nk6fjeJPvn6+kdz2XWI7nx0P49NxMpxmZmJUMsIGAJ5AaAOA3WPlNvUqt11vJrdZiW1OYgMAryG0AUAn2EZuI7EBQEgQ2gCgK2w2t5HYACAwCG0A0CE2ldtIbAAQHoQ2AOgW6+c2EhsABAmhDQA6xzq5jcQGAKFCaAOALrJabiOxAUDAENoAoKMsm9tIbAAQNoQ2AOgu7XMbiQ0AgofQBgCdpk1uI7EBQB8gtAFA12nObd/7q5/yr1QBQB8gtAGAB1TktnH6bBR/+vXJ9/7iHz/59+e/eTk/Hs5JbAAQMIQ2APCDqtyWPBvFRxfzo2H8bBSfjVMSGwAEDKENALzBzW2z/HySnlwlp+PkxXU6mmY3iSCxAUCoENoAwCes3CZnqRzP89E0G02z8Ty/SUSSk9gAIFjCDG26WUfEIJWykLLIhUoyOU/lTSxuYjFLZZLJTCghldz1GiLi9uwzQYU2pYrHX34VAUDoPHoUPXoUPXwU/eJR9ItHn2sfPooeRdGjXa8bAGyV/S+/UkVP01s4oU2pQikVRdHgwwNEDN8PDgYfPhl8aP/3yeCDXa8VIm7ZKIqEVEoVPYxtgYQ2ndiEJLQh9skPrJT2wcHggye7XyVE3LJRFOkbIXqY20IJbUUhVZELQhsiImLIRlE0z2SaSyFV3x46CiW0KSVVkeaS0IaIiBiwURRdxyLOZC5U3x5NCCG0vZ4bLeYZoQ0RETFkoyi6nOWzVOZC9W2sLZjQVuRSzVNCGyIiYshGUTS8yaaJyISSPbutLZzQlgnFSBsiImLY6tB2Q2jzFBPaZqkgtCEiIgasCW1pLglt/kFoQ0RE7ImENr8htCEiIvZEQpvfENoQERF7IqHNbwhtiIiIPZHQ5jeENsQ27h2MVFHcfXDk/P/63n94popi72C0jdXeP55scFW3qkeriuivhDa/IbRhP50kQhWF9vB8vvD9HQ9tepVs9UZ1JwndfXDkrOEkEfYburOqiAFLaPMbQhv2TR2S7KB2eD5fmNs2GNomiWgTE5dynVXSaWnbu12HNjubno5TVRT3H55t+6MR0Uho8xtCG/bNSSJOx+myf0VoW9NyaBu8zm3b/mhENBLa/IbQhr1Sh5uG0R2dYMrzd82hzZ71s1+3Zy33jyd6kM92UJVm7Knb/eOJef10nB6ez+01rFy98vbefXCkP8WERf3j/vHE/iyzGs7nHp7Pza44PJ+fjlOzDvbSymtlWxna7KlhZxN0nlNFYRL23sFIr0blzmnYb/ZRsHfR4fm8blGIoUpo8xtCG/bK5hundC/u5Ab9/3Whzcki9vKdgDhJhH7dGWlzlmDHFCdp6fUxP9pDhgtDm7M+p+PU/G15pK05tNlrOHgdvMxm6jeU921laNOfpbfIXlX7E/ePJ3aqM+9x7gWs22/26t19cGTeY+8BE2F3Xp+I25bQ5jeENuyVdZFiUJUq7FfqQpseebKXY7r/umnQhtBWzk/2K3bOcH5VfhChbvhqkgjnxRVCm/1mPf7XsBubX18Y2ozlYGp2SMN+czKlVr/ojLqVPxExPAltfkNow17ZENoqe3cTX+pCm5nFs9V/Ujd40xDaytHB+Sw7tLW5zc553cxj2uFp2dDmrKEzwVpefnkzF+5hs572jipvo1mZhfvNmbctZ1xVepoVMUgJbX5DaMNe2XBP28qhre6xhg6GNnNTnb0C64e2Ns9VLHtPm722dW9oGdrMepop1M1+aQuiRxLa/IbQhr3SuUus/KsVpkfrRmjq0kzDfOJS06MrhDa9Sk5y1T82rHlzaGuIrc27d/DmwGfdJpjlrzY9Wrk3KgM6Yh8ktPkNoQ37pu65naEm/aPzDRSTRJiAUpeQyt/6Zh440Lmh/CCCvrHMvN9OM06m1As3g15rhjYn/zmbZicYO0vp/28IbfrP7ZE5528rn9gYlL6nzV5Vs68GpZvenE1euN/2jydm3ezt0gNvdg3wIAL2QUKb3xDasIc6X1HhjCqZ11smJGdpdvqxv57DZALzfp1+ymmm7uawdUKb86xl5XOpTsQ0O0d/M4jZP+WRReerTMxqlEObrTM+V47CzttMuKzcOQ37zb7rzhmoq6wBxIAltPkNoQ0RvZAb0RDXl9DmN4Q2RPRCQhvi+hLa/IbQhoheSGhDXF9Cm98Q2hAREXsioc1vCG2IiIg9kdDmN4Q2RETEnkho8xtCGyIiYk8ktPkNoQ0REbEnEtr8htCGiIjYEwltfkNoQ0RE7ImENr8htCEiIvZEQpvfENoQERF7IqHNbwhtiIiIPZHQ5jeENkRExJ5IaPMbQhsiImJPJLT5jQlt80x+/sXjCAAAAELli8c6tGVCEdr8Q4e2XKp5Jq9m+Yvr9NkoObqIv72Iv3mJiIiIATj/9iJ+OkpOrpLhTTYltHnKq9AmVJzJ61i8nKQnV8nTUXw8jI+HydFFjIiIiF57PIyfDuPfXiYvrtPLWT5LRC6UVEr1KbWFENqKolBKCanSXE0TcTnNzq/Ts+v0dJyeXCWIiIjou6fj9Gycnl+nw2k+icU8k7lUetSmP4QS2opCvh5su4nF1Sy/nOWjaTaaZqNpjoiIiJ6bXU6zq1l+HeezVKS5FKro1zhbOKFNFUopoYpcqiSX81TMUjl79V9ERET0XTFLxDyTcSbTXAo9zLbr+HHLBBLaiqJQRaFUIaQSUuVS5ULlEhEREUNRqEwoIYt+JrYipNBW6PG2olBKKVVIpRARETEk9U1squhjYisCC22GVwcVERERw7LPhBnaAAAAAAKD0AYAAADgAf8/v1r0/JFohp0AAAAASUVORK5CYII=" alt="" />

  如图所示,CollectionFixture可以用于添加所有Test Case执行前后的一些操作(即例子中的创建和销毁数据库连接)。对于部分Case需要初始化浏览器,我们可以使用ClassFixture提供的功能。每个Case执行前后的操作我们可以使用测试类构造函数和IDisposable.Dispose来进行处理。下面我就逐一为大家讲解如何使用这些功能。

(二)Test Case的构造函数 & IDisposable.Dispose

  如何在每个Test Case执行前后做处理?这应该是每个使用过单元测试框架的同学都知道的。多数的框架都是通过打标签的方式来提供类似功能的,例如:NUnit的[Setup]和[TearDown] , MSTest的[TestInitialize]和[TestCleanup]。而xUnit.Net提供了一种更加优雅的处理方式,就是利用构造函数以及IDisposable.Dispose方法来实现对应的功能。懂得一些面向对象的小伙伴也许会发现,这样的改进主要是为了支持依赖注入(而不是简单的省去了标签而已)。这也为我后续的文章中要讲到的许多功能的注入实现提供了可能。讲了这么多理论,先上一段Code:

 namespace Demo.UnitTest.Lesson03_Fixture
{
public class SharedContext_Constructor : IDisposable
{
private ITestOutputHelper _output;
public SharedContext_Constructor(ITestOutputHelper output)
{
this._output = output;
_output.WriteLine("Execute constructor!");
} #region Test case
[Fact(DisplayName = "SharedContext.Constructor.Case01")]
public void TestCase01()
{
_output.WriteLine("Execute case 01!");
} [Fact(DisplayName = "SharedContext.Constructor.Case02")]
public void TestCase02()
{
_output.WriteLine("Execute case 02!");
} [Fact(DisplayName = "SharedContext.Constructor.Case03")]
public void TestCase03()
{
_output.WriteLine("Execute case 03!");
}
#endregion public void Dispose()
{
_output.WriteLine("Execute dispose!");
}
}
}

  代码中的ITestOutputHelper就是通过构造函数注入的方式为我们提供了输出Log的能力(这个下一篇的文章我会为大家讲解),这里你只需要知道他是可以输出一些日志的即可。上面的Code中,有3个Case,Case执行的时Runner会在执行每个Case前后分别调用测试类的构造函数和对应的Dispose方法。输出如下,我们可以看到测试类构造函数和Dispose方法在每一个Case执行前后都被执行。

aaarticlea/png;base64,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" alt="" />

(三)Class级别的Fixture : IClassFixture

  ok,现在我们考虑前文中提到的问题二:仅仅打开一次浏览器,完成测试功能01,02,03之后,再关闭浏览器。xUnit.Net为我们提供了基于类级别的Fixture,即IClassFixture。IClassFixture是一个泛型接口(标记接口,没有任何需要实现的方法),接受一个类型。该类型的构造函数会在测试类中的第一个Test Case运行之前被调用。而其IDisposable.Dispose方法会在测试类中最后一个测试方法执行完成之后被执行。IClassFixture定义如下:

 namespace Xunit
{
public interface IClassFixture<TFixture> where TFixture : class
{
}
}

  如何使用IClassFixture呢?步骤如下:

  Step 01 : 创建自定义的Fixture类,添加构造函数和IDisposable接口的实现方法。本文主要是讲解xUnit.Net的使用,因此示例代码中我没有给出创建浏览器驱动的具体代码(这部分内容可以参见我的另一个系列《[小北De编程手记] : Selenium For C# 教程》),只是添加了ExecuteCount属性用于标记执行次数,代码如下:

     public class SingleBrowserFixture : IDisposable
{
public int UserId { get; set; }
public string UserName { get; set; }
public static int ExecuteCount; public SingleBrowserFixture()
{
this.UserId = ;
this.UserName = "North";
ExecuteCount++; //打开浏览器...
} public void Dispose()
{
//关闭浏览器...
}
}

  Step 02 :创建具体的测试类,并继承 IClassFixture<SingleBrowserFixture>(注意:我们用接口标记需要使用哪一个类)

  Step 03 :在测试类中获取Fixture对象,xUnit.Net 用构造函数注入的方式提供了获取IClassFixture标记对象的方法。我们可以在测试类的构造函数中添加对应的注入参数来获取Fixture,这样的设计使得我们在测试类中所有的测试用例中共享一些Context数据,xUnit.Net执行测试用例的时候会自动识别构造参数的类型是否和IClassFixture所标记的类型是否匹配。代码如下:

     public class SharedContext_ClassFixture : IClassFixture<SingleBrowserFixture>
{
ITestOutputHelper _output;
SingleBrowserFixture _fixture;
static int _count;
public SharedContext_ClassFixture(ITestOutputHelper output, SingleBrowserFixture fixture)
{
_output = output;
_fixture = fixture;
_count++;
}
#region Test case
[Fact(DisplayName = "SharedContext.ClassFixture.Case01")]
public void TestCase01()
{
_output.WriteLine("Execute case 01! Current User:[{0}]-{1}", _fixture.UserId, _fixture.UserName);
_output.WriteLine("Execute count! Constructor:[{0}] , ClassFixture:[{1}]", _count, SingleBrowserFixture.ExecuteCount); } [Fact(DisplayName = "SharedContext.ClassFixture.Case02")]
public void TestCase02()
{
_output.WriteLine("Execute case 01! Current User:[{0}]-{1}", _fixture.UserId, _fixture.UserName);
_output.WriteLine("Execute count! Constructor:[{0}] , ClassFixture:[{1}]", _count, SingleBrowserFixture.ExecuteCount);
}
#endregion Test case
}

  代码中可以看到,我用_count 标记了测试类的执行次数,用ExecuteCount标记Fixture类的执行次数,看下运行结果:

aaarticlea/png;base64,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" alt="" />

  可以看到,测试类的构造被执行了2次(也就是每个测试用例执行的时候都会执行一次),而ClassFixture标记的测试类中的构造函数只是被执行了一次。IDisposable.Dispose 也具有相同的逻辑。

  下一篇,为大家介绍:

  • Collection级别的Fixture : ICollectionFixture(下)
  • 依赖注入以及输出日志(下)

小北De系列文章:

  《[小北De编程手记] : Selenium For C# 教程

  《[小北De编程手记]:C# 进化史》(未完成)

  《[小北De编程手记]:玩转 xUnit.Net》(未完成)

Demo地址:https://github.com/DemoCnblogs/xUnit.Net

如果您认为这篇文章还不错或者有所收获,可以点击右下角的【推荐】按钮,因为你的支持是我继续写作,分享的最大动力!
作者:小北@North
来源:http://www.cnblogs.com/NorthAlan
声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。

[小北De编程手记] : Lesson 03 玩转 xUnit.Net 之 Fixture(上)的更多相关文章

  1. [小北De编程手记] : Lesson 04 玩转 xUnit.Net 之 Fixture(下)

    上一篇文章<[小北De编程手记] : Lesson 03 玩转 xUnit.Net 之 Fixture(上)>向大家介绍了xUnit.Net 共享数据的方式.Test Case的构造函数 ...

  2. [小北De编程手记] : Lesson 01 玩转 xUnit.Net 之 概述

    谈到单元测试,任何一个开发或是测试人员都不会觉得陌生.我想大多数的同学也都是接触过各种单元测试框架.关于单元测试的重要性,应该不会有太多的质疑.这个系列,我向大家介绍一下xUnit.Net的使用.就让 ...

  3. [小北De编程手记] : Lesson 06 玩转 xUnit.Net 之 定义自己的FactAttribute

    xUnit.Net本身提供了标记测试方法的标签Fact和Theory.在前面的文章<Lesson 02 玩转 xUnit.Net 之 基本UnitTest & 数据驱动>中,也对它 ...

  4. [小北De编程手记] : Lesson 02 玩转 xUnit.Net 之 基本UnitTest & 数据驱动

    关于<玩转 xUnit.Net>系列文章,我想跟大家分享的不是简单的运行一下测试用例或是介绍一下标签怎么使用(这样的文章网上很多).上一篇<Lesson 01 玩转 xUnit.Ne ...

  5. [小北De编程手记] : Lesson 05 玩转 xUnit.Net 之 从Assert谈UT框架实践

    这一篇,本文会介绍一下基本的断言概念,但重点会放在企业级单元测试的相关功能上面.下面来跟大家分享一下xUnit.Net的断言,主要涉及到以下内容: 关于断言的概念 xUnit.Net常用的断言 关于单 ...

  6. [小北De编程手记] : Lesson 03 - Selenium For C# 之 元素定位

    无论哪一种自动化测试的驱动框架(基于B/S,桌面应用,还是手机App).都应当具有一套优秀的元素定位技术.通常的自动化测试流程也可以简单的归结为是一个从被测试程序中识别或是定位元素以及执行操作和验证元 ...

  7. [小北De编程手记] : Lesson 08 - Selenium For C# 之 PageFactory & 团队构建

    本文想跟大家分享的是Selenium对PageObject模式的支持和自动化测试团队的构建.<Selenium For C#>系列的文章写到这里已经接近尾声了,如果之前的文章你是一篇篇的读 ...

  8. [小北De编程手记] : Lesson 07 - Selenium For C# 之 窗口处理

    在实际的自动化测试过程中,我们会遇见许多需要对窗口进行处理的情况.比如,点击删除某条信息的时候系统会显示一个Alert框.或者点击某个超链接时会在浏览器中打开一个新的页面.这一篇,来和大家分享一下Se ...

  9. [小北De编程手记] : Lesson 06 - Selenium For C# 之 流程控制

    无论你是用哪一种自动化测试的驱动框架,当我们构建一个复杂应用程序的自动化测试的时候.都希望构建一个测试流程稳定,维护成本较低的自动化测试.但是,现实往往没有理想丰满.而这一篇,我会为大家讲解我们在使用 ...

随机推荐

  1. IOS-各控件默认尺寸和参考图标大小

    UITabBar

  2. POJ1014 解题报告(DFS)

    题目在此:http://poj.org/problem?id=1014 要看清题意呢,题中要求输入的是价值分别为1,2,3,4,5,6的大理石的个数,而不是6块价值为输入数字的大理石!选这个题主要想练 ...

  3. C++中如何定义类和对象?

    在C++语言中,对象的类型被称为类,类代表了某一批对象的共性和特征. 类是对象的抽象,而对象是类的具体实例.如同C中的结构体一样,我们要先定义一个结构体,再使用结构体去定义一个变量.同一个结构体可以定 ...

  4. Design3:使用HierarchyID构建数据的分层结构

    1,传统的分层结构是父子结构,表结构中有一个ParentID字段自引用表的主键,表示“归属”关系,例如 create table dbo.emph ( ID int not null primary ...

  5. SQL Server 2012 T-SQL 新特性

    序列 Sequence SQL Server 现在将序列当成一个对象来实现,创建一个序列的例子语法如下: CREATE SEQUENCE DemoSequence START WITH 1 INCRE ...

  6. AJAX大文件切割上传以及带进度条。

    分块传输的原理就是利用HTML5新增的文件slice截取函数. 代码如下: html: <input id="f" type="file" name=&q ...

  7. 简单的小工具wordlight——让VS变量高亮起来

    前段时间一直在使用matlab,今天需要使用vs2008,而用惯了matlab,习惯了其中一项选中变量高亮的设置,突然回来使用VS,感到各种不适应,顿时想到了一个词:矫情 呵呵,于是在网上找各种插件, ...

  8. MAC下安装与配置MySQL

    MAC下安装与配置MySQL   MAC下安装与配置MySQL 一 下载MySQL 访问MySQL的官网http://www.mysql.com/downloads/ 然后在页面中会看到“MySQL ...

  9. JavaScript作用域原理(一)——作用域链

    一.作用域的描述 JavaScript权威指南中对作用域有一句很精辟的描述:“JavaScript中的函数运行在它们被定义的作用域里,而不是它们被执行的作用域里.” 在JavaScript中,作用域的 ...

  10. Windows Azure HandBook (10) 测试本地网络到微软云的延迟

    <Windows Azure Platform 系列文章目录> 之前遇到一些微软云的客户,在使用海外数据中心的时候,需要评估本地网络到微软云网络的延迟. 我们建议部署到微软云上的服务,离最 ...