Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用服务运行自动化集成测试';s客户端(带Xunit的asp.net core 3.1)_C#_Asp.net Core_Integration Testing_Xunit - Fatal编程技术网

C# 如何使用服务运行自动化集成测试';s客户端(带Xunit的asp.net core 3.1)

C# 如何使用服务运行自动化集成测试';s客户端(带Xunit的asp.net core 3.1),c#,asp.net-core,integration-testing,xunit,C#,Asp.net Core,Integration Testing,Xunit,问题: 如何使用Xunit和TestServer与服务的客户端运行自动化集成测试,并使用TestServer访问服务的端点?问题的核心是如何在集成测试中实现NuGet,以及“正常”的集成测试 预期结果: 测试用例将调用ServiceClient上/中的方法,该方法将再次调用TestServer实例中的服务端点,在DB上执行CRUD。这将通过ServiceClient而不是TestService生成的“通用”HttpClient执行 我尝试过的 对实际服务的端点进行集成测试,并测试从端点到数据库的

问题:

如何使用Xunit和TestServer与服务的客户端运行自动化集成测试,并使用TestServer访问服务的端点?问题的核心是如何在集成测试中实现NuGet,以及“正常”的集成测试

预期结果:

测试用例将调用ServiceClient上/中的方法,该方法将再次调用TestServer实例中的服务端点,在DB上执行CRUD。这将通过ServiceClient而不是TestService生成的“通用”HttpClient执行

我尝试过的

对实际服务的端点进行集成测试,并测试从端点到数据库的所有逻辑

我曾经摆弄过TestServer,试图并行使用它,但它就是不起作用。我觉得它只是不想同时运行两个应用程序

我也阅读了很多文档,在谷歌上搜索过,但我只获得了关于运行单一服务的信息

“客户端”消歧

  • ServiceClient=作为NuGet分发的客户端,用于抽象与服务端点的通信
  • RestClient=HttpClient的包装器/抽象,用于在ServiceClient中添加身份验证令牌
服务/解决方案结构

  • Service.Name(Classlib)
  • Service.Name.Api
  • Service.Name.Client(Classlib,自包含Nuget)
  • Service.Name.Tests(Xunit;单元和集成测试)
关于客户的信息

它使用
IConfiguration
,配置和注册所有依赖项(在asp.net 3.1中使用vanilla DI)。RestClient/HttpClient使用配置(用于设置基本URI、身份验证等)来访问服务的端点


我真的没有看到任何明显的代码要粘贴在这里,但是如果有详细信息或需要更多信息,请告诉我,我将用所需的任何内容更新问题:-)

您有什么问题?只要客户端接受HttpClient,它就应该能够调用TestServer的版本?您说ingetration测试正在运行,但您也问如何编写集成测试?请澄清你的看法question@citronas更新了问题和预期章节。问题的核心是如何在集成测试中实现NuGet,除了“正常”的集成测试之外,不使用TestServer@Euphoric我的错!很难不假设人们在写作时有和我一样的心态。我不想使用它,而是通过拥有自己的HttpClient实现的Nuget进行测试,因为我想通过Nuget测试端点,而不仅仅是使用TestServer直接在端点上测试客户端的分布方式,这与这里无关。因此,忽略任何与NuGet相关的内容。您需要的是ServiceClient能够使用HttpClient,这样当它用于测试时,TestServer的HttpClient可以传递到ServiceClient。如果ServiceClient不允许将HttpClient传递给它,那么就不可能在TestServer的测试中使用它。您有什么问题?只要客户端接受HttpClient,它就应该能够调用TestServer的版本?您说ingetration测试正在运行,但您也问如何编写集成测试?请澄清你的看法question@citronas更新了问题和预期章节。问题的核心是如何在集成测试中实现NuGet,除了“正常”的集成测试之外,不使用TestServer@Euphoric我的错!很难不假设人们在写作时有和我一样的心态。我不想使用它,而是通过拥有自己的HttpClient实现的Nuget进行测试,因为我想通过Nuget测试端点,而不仅仅是使用TestServer直接在端点上测试客户端的分布方式,这与这里无关。因此,忽略任何与NuGet相关的内容。您需要的是ServiceClient能够使用HttpClient,这样当它用于测试时,TestServer的HttpClient可以传递到ServiceClient。如果ServiceClient不允许将HttpClient传递给它,那么就不可能在TestServer的测试中使用它。