1、安装引用BeetleX.ConcurrentTest
相关文档及源码:https://github.com/IKende/ConcurrentTest
注意:本文中示例代码是在.NET Core 3.1中测试。
由于使用Install-Package BeetleX.ConcurrentTest -Version 0.2.8
通过Nuget安装引用没找到,本文中是直接下载源代码,添加引用BeetleX.ConcurrentTest
这个项目。另外还需要通过Nuget安装的引用如下:
1)使用Nuget界面管理器
搜索"BeetleX.FastHttpApi"
,在列表中找到它,点击"安装"
相关文档:VS(Visual Studio)中Nuget的使用
2)使用Package Manager命令安装
PM> Install-Package BeetleX.FastHttpApi
3)使用.NET CLI命令安装
> dotnet add TodoApi.csproj package BeetleX.FastHttpApi
2、自定义的FastHttpClientTest测试类代码
using BeetleX.ConcurrentTest; using BeetleX.FastHttpApi; using BeetleX.FastHttpApi.Clients; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Text; namespace ConsoleApp1 { public class obj { public int id { get; set; } public int lid { get; set; } public int awardId { get; set; } public int balance { get; set; } } public class FastHttpClientTest { public FastHttpClientTest() { httpApiClient = new HttpApiClient(Host); clientApi = httpApiClient.Create<IHttpClientApi>(); } public static ConcurrentDictionary<int, List<obj>> dics = new ConcurrentDictionary<int, List<obj>>(); private string Host = "http://localhost:5000"; private HttpApiClient httpApiClient; private IHttpClientApi clientApi; [CTestCase] public void GetWinAward() { var result = clientApi.GetWinAward(1, "1"); obj o = null; if (result.Data!=null) o = Newtonsoft.Json.JsonConvert.DeserializeObject<obj>(result.Data?.ToString()); if (o!=null&&o.awardId > 0) { lock (dics) { if (dics.ContainsKey(o.awardId)) dics[o.awardId].Add(o); else { dics[o.awardId] = new List<obj>(); dics[o.awardId].Add(o); } } Console.WriteLine(result.Data.ToString()); } } // [CTestCase] // public void ListEmployees () { // clientApi.ListEmployees (2); // } [JsonFormater] public interface IHttpClientApi { [BeetleX.FastHttpApi.Get(Route = "api/service/GetWinAward")] JsonResult GetWinAward(int lid, string openid, string type = "release", string code = "", int latitude = -1, int longitude = -1); // [Post (Route = "api/employee")] // Employee AddEmployee (Employee item); } } }
3、执行测试的代码
using BeetleX.ConcurrentTest; using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { //配置线程和请求次数 CTester.RunTest<FastHttpClientTest>(3, 2000); foreach (var item in FastHttpClientTest.dics.Keys) { Console.WriteLine("awardId = " + item + " count = " + FastHttpClientTest.dics[item].Count); } Console.WriteLine("Hello World!"); } } }
测试项目源码:https://www.cjavapy.com/download/5ebd3facdc72d90263e632d1/