测试技术之使用Microsoft.AspNetCore.TestHost进行完整的功能测试
凌雪 2018-11-07 来源 :网络 阅读 732 评论 0

摘要:本文将带你了解测试技术使用Microsoft.AspNetCore.TestHost进行完整的功能测试,希望对大家学测试技术有所帮助。

本文将带你了解测试技术使用Microsoft.AspNetCore.TestHost进行完整的功能测试,希望对大家学测试技术有所帮助。


 

  简介

  Microsoft.AspNetCore.TestHost是可以用于Asp.net   Core 的功能测试工具。很多时候我们一个接口写好了,单元测试什么的也都ok了,需要完整调试一下,检查下单元测试未覆盖到的代码是否有bug。步骤为如下:程序打个断点->F5运行->通常需要登录个测试账号->查找要调试api的入口->获得断点开始调试=>代码报错?很多时候需要停止调试修改->回到第一步。如此反复循环,做着重复的工作,Microsoft.AspNetCore.TestHost正是为了解决这个问题,它可以让你使用xTest或者MSTest进行覆盖整个HTTP请求生命周期的功能测试。

  进行一个简单的功能测试

  新建一个Asp.net   Core WebApi和xUnit项目

   

  ValuesController里面自带一个Action

     

  我们在xUnit项目里面模拟访问这个接口,首选安装如下nuget包:

  Microsoft.AspNetCore.TestHost

  Microsoft.AspNetCore.All(很多依赖懒得找的话直接安装这个集成包,百分之90涉及到AspNetCore的依赖都包含在里面)

  然后需要引用被测试的AspnetCoreFunctionalTestDemo项目,新建一个测试类ValuesControllerTest

     

  将GetValuesTest方法替换为如下代码,其中startup类是应用自AspnetCoreFunctionalTestDemo项目

  [Fact]

  public   void GetValuesTest()

  {

  var   client = new   TestServer(WebHost

  .CreateDefaultBuilder()

  .UseStartup<Startup>())

  .CreateClient();

  string   result =   client.GetStringAsync("api/values").Result;

  Assert.Equal(result,   JsonConvert.SerializeObject(new string[] { "value1",   "value2" }));

  }

   


  此时在ValueController打下断点

     

  运行GetValuesTest调试测试

     

  成功进入断点,我们不用启动浏览器,就可以进行完整的接口功能测试了。

  修改内容目录与自动授权

  上面演示了如何进行一个简单的功能测试,但是存在两个缺陷:

  webApi在测试的时候实际的运行目录是在FunctionalTest目录下

  对需要授权的接口不能正常测试,会得到未授权的返回结果

  1.内容目录

  我们可以在Controller的Get方法输出当前的内容目录

     

  内容目录是在测试x项目下这与我们的预期不符,如果webapi项目对根目录下的文件有依赖关系例如appsetting.json则会找不到该文件,解决的办法是在webHost中手动指定运行根目录



   
                   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标软件测试之测试技术频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程