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

新的网站建设技术方案企业门户网站建设情况汇报

新的网站建设技术方案,企业门户网站建设情况汇报,徐东网站建设公司,网页设计与制作职位2016.6.27 微软已经正式发布了.NET Core 1.0 RTM#xff0c;但是工具链还是预览版#xff0c;同样的大量的开源测试库也都是至少发布了Alpha测试版支持.NET Core, 这篇文章 The State of .Net Core Testing Today 就将各个开源测试库的目前进展进行了汇总。本文我们的目的是在… 2016.6.27 微软已经正式发布了.NET Core 1.0 RTM但是工具链还是预览版同样的大量的开源测试库也都是至少发布了Alpha测试版支持.NET Core, 这篇文章 The State of .Net Core Testing Today 就将各个开源测试库的目前进展进行了汇总。本文我们的目的是在我们构建我们应用程序的时候能够进行测试如何使用XUnit结合你可以通过为你的项目添加不同的测试用例NSubstitute进行单元测试同时对整个项目进行集成测试。这次我们使用Visual Studio 2015 Update 3进行编写 。xUnit.net是基于.NET Framework 的开源测试工具。通过xUnit.net可以针对C#/F#/VB.NET等进行单元测试。ASP.NET Core 更直接把以往的Visual Studio Unit Test Framework 说再见了而直接使用上了xUnit.netxUnit.net基于NUnit 。从网站或者官网上你可以找到不少xUnit的优点与NUnit和其他测试框架相比有一下一些优势           1为每个测试方法产生一个对象实例         2取消了[SetUp]和[TearDown]         3取消了[ExpectedException]         4类似于Aspect的功能         5减少了自定义属性Attribute的数目         6采用泛型         7匿名委托         8可扩展的断言         9可扩展的测试方法         10可扩展的测试类          了解更多关于xUnit.net可以参考这里点击打开链接[舍弃Nunit拥抱Xunit]。   使用xUnit.net 单元测试   首先我们类似于.NET Core系列 3 、使用多个项目 创建一个解决方案testdemo添加一个类库项目叫做DotnetCoreLibLibrary.cs 也替换为 namespace DotnetCoreLib{    public class Calculator    {        public int Multi(int x, int y)        {            return x * y;        }    } } 下面我们要创建一个针对DotnetCoreLib的测试项目具体创建过程我们参照文章 https://github.com/dotnet/core-docs/tree/master/samples/core/getting-started/unit-testing-using-dotnet-test 我们修改DotnetCoreLibTest 项目的project.json 增加XUnit相关的nuget包引用并修改部分配置。     还有我们设置Framework节点为 netcoreapp1.0 依赖的xunit 和xunit.runner的包 dependencies: {    dotnet-test-xunit: 2.2.0-preview2-build1029,    DotnetCoreLib: {      version: 1.0.0-*,      target: project    },    xunit: 2.2.0-beta2-build3300,    xunit.runner.console: 2.2.0-beta2-build3300  }   Calculator接下来就开始测试我们的类库Calculator 修改Class1.cs为CalculatorTest.cs   using DotnetCoreLib;using Xunit;   namespace DotnetCoreLibTest{    public class CalTest    {        private readonly Calculator calculator;         public CalTest()        {            calculator new Calculator();        }           [Fact]        public void OneMutiOneIsOne()        {            var result calculator.Multi(1, 1);            Assert.Equal(1, result);        }           [Theory]        [InlineData(-1)]        [InlineData(0)]        [InlineData(1)]        public void ReturnValue(int value)        {            var result calculator.Multi(1,value);             Assert.Equal(result, value);        }    }}   上面的两个测试我们分别用了2个特性[Fact] 和[Theory], [Fact]属性表示为一个方法的单个测试[Theory]属性表示执行相同的代码但是有不同的输入的参数的测试套件。[InlineData] 属性可用于指定为这些输入值。通过特性[Fact] 和[Theory]xUnit就理解了这是个测试方法然后运行这个方法。在一个测试方法中我们一般遵循包含三步骤的AAA模式 Arrange为测试准备Act运行SUT(实际测试的代码)Assert校验结果 下面我们运行dotnet test 就可以看到结果了。 C:\Users\geffz\Documents\Visual Studio 2015\Projects\TestDemo\DotnetCoreLibTestdotnet testProject DotnetCoreLib (.NETCoreApp,Versionv1.0) was previously compiled. Skipping compilation.Project DotnetCoreLibTest (.NETCoreApp,Versionv1.0) was previously compiled. Skipping compilation.xUnit.net .NET CLI test runner (64-bit .NET Core win10-x64)  Discovering: DotnetCoreLibTest  Discovered:  DotnetCoreLibTest  Starting:    DotnetCoreLibTest  Finished:    DotnetCoreLibTest TEST EXECUTION SUMMARY    DotnetCoreLibTest  Total: 4, Errors: 0, Failed: 0, Skipped: 0, Time: 0.206sSUMMARY: Total: 1 targets, Passed: 1, Failed: 0.   上面的输出我们知道已经执行了4个测试都通过了[Face]特性标识表示固定输入的测试用例而[Theory]特性标识表示可以指定多个输入的测试用例结合InlineData特性标识使用。在上面的例子里总共使用了三次InlineData特性标识每次设定的值都不同在执行单元测试时设定的值会被测试框架赋值到对应的测试方法的参数里。你可以通过为你的项目添加不同的测试用例这样就可以让你的代码得到充分测试。   xUnit.net 搭配NSubstitute 进行单元测试      在一个分层结构清晰的项目里各层之间依赖于事先约定好的接口。在多人协作开发时大多数人都只会负责自己的那一部分模块功能开发进度通常情况下也不一致。当某个开发人员需要对自己的模块进行单元测试而依赖的其他模块还没有开发完成时则需要对依赖的接口通过Mock的方式提供模拟功能从而达到在不实际依赖其他模块的具体功能的情况下完成自己模块的单元测试工作。这时我们通常需要有一个单元测试模拟类库一直以来开发者对 mocking 类库的语法的简洁性有强烈的需求NSubstitute 试图满足这一需求。简单明了的语法可以让我们将重心放在测试本身而不是纠缠在测试替代实例的创建和配置上。NSubstitute 已尝试将最常用的操作需求简单化、易用化并支持一些不常用的或探索性的功能与此同时还尽可能地将其语法向自然语言靠近。关于NSubstitute的更详细信息请往 NSubstitute完全手册索引。   NSubstitute 已经发布2.0 RC版本支持.NET Core。引入NSubstitute 相关nuget包 我们把Calculator 类重构下提取出接口ICalculator     public interface ICalculator    {        int Multi(int x, int y);    }   我们可以让NSubstitute来创建类型实例的替代实例可以创建诸如 Stub、Mock、Fake、Spy、Test Double 等但当我们只是想要一个能有一定程度控制的替代实例时为什么我们要困扰于此呢我们可以告诉被创建的替代实例当方法被调用时返回一个值      [Fact]      public void Test_GetStarted_ReturnSpecifiedValue()      {          ICalculator calculator Substitute.ForICalculator();          calculator.Multi(1, 2).Returns(2);           int actual calculator.Multi(1, 2);          Assert.Equal(2, actual);      } 下面我们运行dotnet test 就可以看到结果了增加了上面的2个用例关于NSubstitute的更详细信息请往 NSubstitute完全手册索引。   集成测试 上面我们只是对逻辑进行了单元测试。对于Asp.Net Core项目还需要模拟在网站部署的情况下对各个请求入口进行测试。NET Core 可为快速轻松集成测试提供非常棒的支持。 TestServer 类为 ASP.NET Core 中的集成测试执行大部分繁重操作Microsoft.AspNetCore.TestHost 包中具有此类。本节内容来自于MSDN杂志《 ASP.NET Core - 实际的 ASP.NET Core MVC 筛选器》这些集成测试不需要数据库或 Internet 连接或运行的 Web 服务器。它们如同单元测试一样快速简单但最重要的是它们允许你在整个请求管道中测试 ASP.NET 应用而不只是控制器类中的孤立方法。建议尽可能编写单元测试并针对无法单元测试的行为退回到集成测试但使用此类高性能方式在 ASP.NET Core 中运行集成测试是非常棒的。   通过在一个工程里同时模拟了服务端(TestServer)和客户端(HttpClient)的通信从而达到了整体测试WebApi接口的目的相关的代码放在https://github.com/ardalis/GettingStartedWithFilters/tree/master/IntegrationTests 。文章对ASP.NET CORE MVC的筛选器进行测试由于很难通过编写单元测试来测试此类场景但是可以通过ASP.NET Core 的集成测试来达到相同的目的。 using System.IO;using System.Net.Http;using System.Net.Http.Headers;using Filters101;using Microsoft.AspNetCore.Hosting;using Microsoft.AspNetCore.TestHost;   namespace IntegrationTests{    public class AuthorsControllerTestBase    {        protected HttpClient GetClient()        {            var builder new WebHostBuilder()                .UseContentRoot(Directory.GetCurrentDirectory())                .UseStartupStartup()                .UseEnvironment(Testing);            var server new TestServer(builder);            var client server.CreateClient();             // client always expects json results            client.DefaultRequestHeaders.Clear();            client.DefaultRequestHeaders.Accept.Add(                new MediaTypeWithQualityHeaderValue(application/json));             return client;        }    }}     using System.Collections.Generic;using System.Linq;using System.Net.Http;using System.Threading.Tasks;using Filters101.Models;using Newtonsoft.Json;using Xunit; namespace IntegrationTests.AuthorsController{    public class Get : AuthorsControllerTestBase    {        private readonly HttpClient _client;         public Get()        {            _client base.GetClient();        }         [Theory]        [InlineData(authors)]        [InlineData(authors2)]        public async Task ReturnsListOfAuthors(string controllerName)        {            var response await _client.GetAsync($/api/{controllerName});            response.EnsureSuccessStatusCode();            var stringResponse await response.Content.ReadAsStringAsync();            var result JsonConvert.DeserializeObjectIEnumerableAuthor(stringResponse).ToList();             Assert.Equal(2, result.Count());            Assert.Equal(1, result.Count(a a.FullName Steve Smith));            Assert.Equal(1, result.Count(a a.FullName Neil Gaiman));        }    }} 此案例中的客户端是标准的 System.Net.Http.HttpClient你可以使用它向服务器发出请求正如同通过网络一样。但因为所有请求都在内存中进行所以测试极其快速可靠。在cmd窗口执行单元测试查看测试结果 相关文章 .NET Core系列 1、.NET Core 环境搭建和命令行CLI入门.NET Core系列 2 、project.json 这葫芦里卖的什么药.NET Core系列 3 、使用多个项目 原文地址http://www.cnblogs.com/shanyou/p/5770840.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注 赞赏 人赞赏
http://www.zqtcl.cn/news/187119/

相关文章:

  • 重慶网站建设网络服务器可提供的常见服务有什么、什么、什么和什么服务
  • 网站制作有限公司英文都不懂 学网站建设维护难吗
  • 深圳网站建设公司开发制作网站免费的网页网站
  • 开发网站公司德州做网站公司电话
  • 公司门户网站开发个人网站备案成功后怎么做
  • 远程医疗型网站开发三合一网站有必要吗
  • 什么网站是用html做的网站制作成本多少钱
  • 邢台企业网站制作建设wordpress多站点配置教程
  • 湖北省建设厅网站a群诸城网站价格
  • 江苏网站设计如何设置wordpress不自动更新
  • 已经有网站怎么做淘宝客网站建设 国外
  • 百度新闻源网站株洲在线论坛二手市场
  • 招聘做微信公众号网站维护推广网上国网的好处
  • php企业网站通讯录管理系统查找企业资料的网站
  • 专门做娱乐场所的设计网站有虚拟主机wordpress
  • 在线制作书封网站建德建设局官方网站
  • 广州建设手机网站wordpress 外部链接跳转
  • 传播公司可以做门户网站吗深圳常平网站建设制作公司
  • 最好的网站设计公司源码 php多平台网站建设
  • 下载了网站源码施工企业质量管理体系应按照我国
  • 有关网站建设国内外现状的文献英文谷歌seo
  • 珠海做网站哪间好佛山网站建设骏域
  • 免费网站建设支持ftp网络规划设计师资格证
  • 网站打开文件按钮怎么做十大网络游戏
  • 问答类咨询网站的建设烟台开发区做网站
  • 网站域名费用怎么做分录销售crm客户管理系统
  • 海南住房与城乡建设网站大连做网站团队
  • 邯郸最穷的三个县长春纯手工seo
  • 昌黎网站建设贵德县建设局网站
  • 山西网站制作公司兼职做网站安全么