当前位置: 首页 > news >正文

正保建设教育网站视频直播app

正保建设教育网站,视频直播app,wordpress 外国主题,网站推广策划书一、尽量用Convey将所有测试用例的Convey汇总 用Convey嵌套的方法#xff0c;将所有测试用例的Convey用一个大的Convey包裹起来#xff0c;每个测试函数下只有一个大的Convey。比如下面的示例代码#xff1a; import (testing. github.com/smartystreet…一、尽量用Convey将所有测试用例的Convey汇总 用Convey嵌套的方法将所有测试用例的Convey用一个大的Convey包裹起来每个测试函数下只有一个大的Convey。比如下面的示例代码 import (testing. github.com/smartystreets/goconvey/convey )func TestStringSliceEqual(t *testing.T) {Convey(TestStringSliceEqual, t, func() {Convey(should return true when a ! nil b ! nil, func() {a : []string{hello, goconvey}b : []string{hello, goconvey}So(StringSliceEqual(a, b), ShouldBeTrue)})Convey(should return true when a nil b nil, func() {So(StringSliceEqual(nil, nil), ShouldBeTrue)})Convey(should return false when a nil b ! nil, func() {a : []string(nil)b : []string{}So(StringSliceEqual(a, b), ShouldBeFalse)})Convey(should return false when a ! nil b ! nil, func() {a : []string{hello, world}b : []string{hello, goconvey}So(StringSliceEqual(a, b), ShouldBeFalse)})}) } 这样做的好处是看单测结果更为清晰直观 RUN TestStringSliceEqualTestStringSliceEqual should return true when a ! nil b ! nil ✔should return true when a nil b nil ✔should return false when a nil b ! nil ✔should return false when a ! nil b ! nil ✔4 total assertions--- PASS: TestStringSliceEqual (0.00s) PASS ok infra/alg 0.006s二、用GWT结构来描述复杂的测试用例 GWT结构嵌套了三层Convey最外层是Given层用来给定测试用例需要的数据中间一层是When层用来执行被测试的函数方法得到result最内层是Then层用So来对result进行断言看结果是否满足期望。 1 示例代码 示例代码如下 func TestStringSliceEqualIfBothNil(t *testing.T) {Convey(Given two string slice which are both nil, t, func() {var a []string nilvar b []string nilConvey(When the comparision is done, func() {result : StringSliceEqual(a, b)Convey(Then the result should be true, func() {So(result, ShouldBeTrue)})})}) }func TestStringSliceNotEqualIfNotBothNil(t *testing.T) {Convey(Given two string slice which are both nil, t, func() {a : []string(nil)b : []string{}Convey(When the comparision is done, func() {result : StringSliceEqual(a, b)Convey(Then the result should be false, func() {So(result, ShouldBeFalse)})})}) }func TestStringSliceNotEqualIfBothNotNil(t *testing.T) {Convey(Given two string slice which are both not nil, t, func() {a : []string{hello, world}b : []string{hello, goconvey}Convey(When the comparision is done, func() {result : StringSliceEqual(a, b)Convey(Then the result should be false, func() {So(result, ShouldBeFalse)})})}) } 在实际运用中可以结合第一条方法构成四层嵌套来描述一个测试用例 func TestStringSliceEqual(t *testing.T) {Convey(TestStringSliceEqualIfBothNotNil, t, func() {Convey(Given two string slice which are both not nil, func() {a : []string{hello, goconvey}b : []string{hello, goconvey}Convey(When the comparision is done, func() {result : StringSliceEqual(a, b)Convey(Then the result should be true, func() {So(result, ShouldBeTrue)})})})})Convey(TestStringSliceEqualIfBothNil, t, func() {Convey(Given two string slice which are both nil, func() {var a []string nilvar b []string nilConvey(When the comparision is done, func() {result : StringSliceEqual(a, b)Convey(Then the result should be true, func() {So(result, ShouldBeTrue)})})})})Convey(TestStringSliceNotEqualIfNotBothNil, t, func() {Convey(Given two string slice which are both nil, func() {a : []string(nil)b : []string{}Convey(When the comparision is done, func() {result : StringSliceEqual(a, b)Convey(Then the result should be false, func() {So(result, ShouldBeFalse)})})})})Convey(TestStringSliceNotEqualIfBothNotNil, t, func() {Convey(Given two string slice which are both not nil, func() {a : []string{hello, world}b : []string{hello, goconvey}Convey(When the comparision is done, func() {result : StringSliceEqual(a, b)Convey(Then the result should be false, func() {So(result, ShouldBeFalse)})})})})} 2 大坑 注意Given层中最好只有一个Then因为多个Then会导致每执行完一个Then就会再次执行一遍被测试的函数方法导致多次执行的结果可能并不相同从而导致意料之外的错误比如上面示例中的“result : StringSliceEqual(a, b)”。所以如果选择使用GWT的结构那么就要保证W中只有一个T最好也要保证G中只有一个W。 三、自定义断言函数 断言函数So中第二个参数Assertion类型定义 type Assertion func(actual interface{}, expected ...interface{}) string 返回空字符串表示断言成功否则就是断言失败了。 1 自定义断言函数 所以我们自定义断言函数时也要注意这点下面是一个参考示例 func ShouldSummerBeComming(actual interface{}, expected ...interface{}) string {if actual summer expected[0] comming {return } else {return summer is not comming!} } 上述代码中第一个条件表示断言成功其它所有情况都是断言失败。 2 在So中使用自定义的断言函数 func TestSummer(t *testing.T) {Convey(TestSummer, t, func() {So(summer, ShouldSummerBeComming, comming)So(winter, ShouldSummerBeComming, comming)}) } 测试结果 RUN TestSummerTestSummer ✔✘Failures:* /Users/zhangxiaolong/Desktop/D/go-workspace/src/infra/alg/slice_test.go Line 52:summer is not comming!2 total assertions--- FAIL: TestSummer (0.00s) FAIL exit status 1 FAIL infra/alg 0.006s
http://www.dnsts.com.cn/news/80827.html

相关文章:

  • 网站建设的重点好的开源网站
  • 网站建设自网站中留言板怎么做
  • 苗圃网站模版外国外贸论坛
  • 沟通交流型网站广告如何做沈阳网站建设的公司
  • 网站建设整改情况汇报中国风html5网站模板
  • 网站域名管理权限建设银行高校缴费网站
  • 做电影采集网站用什么vps广州app开发平台
  • 做网站首选科远网络wordpress伪原创
  • 深圳网站空间购买宿松网站建设
  • 实业有限公司网站怎么做装修公司展厅工艺样板
  • 文山做女主播的在哪个网站WordPress打开 速度
  • 门户网站属于什么类型的模式wordpress主题 破解主题
  • wordpress网站 华为天猫电商平台
  • 招聘网站哪个好o2o网站策划
  • 网站下载工具百度怎么推广自己的店铺
  • 成都网站设计说明书青海城乡住房和建设厅网站
  • 网站页脚内容网站建设详情页
  • 0基础做网站工具易讯网络网站建设
  • 做网站后台程序是怎么来的做信息发布类网站
  • 网站正在建设中市场营销互联网营销
  • 网站被人做跳转北京市建设资格执业中心网站
  • 国外一直小猫做图标的网站佛山中谦建设网站
  • 北京建设官方网站深圳做网站哪家公司最好
  • 做网站用什么配资电脑上海网页制作报价
  • 制作网站源码软件北京网站建设公司飞沐
  • 网站访问慢的原因seog
  • 西安建网站的公司wordpress添加主题提示缺少文件
  • 秦皇岛网站制作与网站建设如何打死网站
  • 宿迁企业做网站建设小说网站小说源
  • 便宜网站设计wordpress 代替cms