添加VS项目

develop
bicijinlian 7 years ago
parent 569aa71559
commit 14b77d26c6

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Http;
using Microsoft.AspNetCore.TestHost;
using Xunit;
using Xunit.Abstractions;
using Xunit.Extensions;
using Xunit.Sdk;
namespace ConfigureStudy.Test
{
[Collection("FullFixture")]
public class ConfigTest:IDisposable
{
private TestServer testServer;
private ConfigFixture config;
public ConfigTest(TestServerFixture testServerFixture, ConfigFixture config)
{
this.testServer = testServerFixture.TestServer;
this.config = config;
}
[Fact]
public void DatabaseConnect_Test()
{
var con = config.GetConnectionStringFromJsonConfig();
Assert.Equal("Server=.\\2008; Database=MyDatabase; User ID=sa; Password=gly-bicijinlian; Trusted_Connection=False;", con);
}
[Fact]
public async Task TestServer_Test()
{
var client = testServer.CreateClient();
var responseMessage = await client.GetAsync("/api/values");
Assert.Equal(HttpStatusCode.OK, responseMessage.StatusCode);
}
public void Dispose()
{
}
}
}

@ -0,0 +1,46 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Autofac" Version="4.8.1" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="2.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.2" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Ini" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Xml" Version="2.1.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
<PackageReference Include="Moq" Version="4.9.0" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ConfigureStudy.WebApp\ConfigureStudy.WebApp.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="DatabaseConfig.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

@ -0,0 +1,4 @@
{
"DatabaseType": "SQL Server",
"ConnectionString": "Server=.\\2008; Database=MyDatabase; User ID=sa; Password=gly-bicijinlian; Trusted_Connection=False;"
}

@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Extensions;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;
using Xunit;
using Xunit.Abstractions;
using Xunit.Extensions;
using Xunit.Sdk;
namespace ConfigureStudy.Test
{
public class ConfigFixture : IDisposable
{
public IConfiguration Configuration;
public ConfigFixture()
{
IConfiguration configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddJsonFile("DatabaseConfig.json")
.Build();
this.Configuration = configuration;
}
public string GetConnectionStringFromJsonConfig()
{
return Configuration.GetValue<string>("ConnectionString");
}
public void Dispose()
{
}
}
}

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using Xunit.Abstractions;
using Xunit.Extensions;
using Xunit.Sdk;
namespace ConfigureStudy.Test
{
/// <summary>
/// 测试集范围,共享配置设置
/// </summary>
[CollectionDefinition(name:"Configure")]
public class ConfigSetup:ICollectionFixture<ConfigFixture>
{
//此接口只做标记,不编写代码
}
}

@ -0,0 +1,34 @@

using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using Xunit.Abstractions;
using Xunit.Extensions;
using Xunit.Sdk;
using ConfigureStudy.Test;
namespace ConfigureStudy.Test
{
/// <summary>
/// 测试程序集设置 夹具
/// 在整个测试程序集的所有类共享
/// 生命周期为整个测试集一个测试周期
/// </summary>
[CollectionDefinition("FullFixture")]
public class FullFixtureSetup : //只在类上做接口标识
ICollectionFixture<ConfigFixture>,
ICollectionFixture<TestServerFixture>
{
//类内,不做任何代码实现。
//使用步骤:
// 1、创建测试夹具类如本例的 ConfigFixture 和 TestServerFixture
// 2、标识测试夹具类本类
// 3、测试类中使用:
// a 标注[Collection("名称与设置类CollectionDefinition特性设置的名字保持相同")]特性
// b 构造函数时,添加“测试夹具类的”参数,构造函数内把参数赋值给私有变量
// c 测试方法内使用
}
}

@ -0,0 +1,32 @@
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.TestHost;
using System;
using System.Collections.Generic;
using System.Text;
using ConfigureStudy.WebApp;
namespace ConfigureStudy.Test
{
public class TestServerFixture : IDisposable
{
public TestServer TestServer;
/// <summary>
/// 设置测试内存服务器 TestServer
/// </summary>
public TestServerFixture()
{
IWebHostBuilder webHostBuilder = new WebHostBuilder();
//WebHostBuilderExtensions
webHostBuilder.UseStartup<Startup>();
TestServer = new TestServer(webHostBuilder);
}
public void Dispose()
{
TestServer = null;
}
}
}

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using Xunit.Abstractions;
using Xunit.Extensions;
using Xunit.Sdk;
namespace ConfigureStudy.Test
{
/// <summary>
/// 测试服务器,全局共享设置
/// </summary>
[CollectionDefinition(name:"GlobalTestServer")]
public class TestServerFixtureSetup : ICollectionFixture<TestServerFixture>
{
}
}

@ -0,0 +1,10 @@
{
"exclude": [
"**/bin",
"**/bower_components",
"**/jspm_packages",
"**/node_modules",
"**/obj",
"**/platforms"
]
}

@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Autofac" Version="4.8.1" />
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.1.1" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.1.1" />
</ItemGroup>
</Project>

@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
namespace ConfigureStudy.WebApp.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
[HttpGet("{id}")]
public ActionResult<string> Get(int id)
{
return "value";
}
// POST api/values
[HttpPost]
public void Post([FromBody] string value)
{
}
// PUT api/values/5
[HttpPut("{id}")]
public void Put(int id, [FromBody] string value)
{
}
// DELETE api/values/5
[HttpDelete("{id}")]
public void Delete(int id)
{
}
}
}

@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
namespace ConfigureStudy.WebApp
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
}

@ -0,0 +1,30 @@
{
"$schema": "http://json.schemastore.org/launchsettings.json",
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:3841",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "api/values",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"ConfigureStudy.WebApp": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "api/values",
"applicationUrl": "http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}

@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
namespace ConfigureStudy.WebApp
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc();
}
}
}

@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
}

@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*"
}

@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Autofac" Version="4.8.1" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="2.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.1.2" />
<PackageReference Include="Microsoft.AspNetCore.TestHost" Version="2.1.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ConfigureStudy.WebApp\ConfigureStudy.WebApp.csproj" />
</ItemGroup>
</Project>

@ -0,0 +1,27 @@
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.TestHost;
using System;
using System.Collections.Generic;
using System.Text;
using ConfigureStudy.WebApp;
namespace WebApiStudy.IntegrationTest
{
public class TestServerFixture : IDisposable
{
public TestServer TestServer;
/// <summary>
/// 设置测试内存服务器 TestServer
/// </summary>
public TestServerFixture()
{
TestServer = new TestServer(new WebHostBuilder().UseStartup<Startup>());
}
public void Dispose()
{
TestServer = null;
}
}
}

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Text;
using Xunit;
using Xunit.Abstractions;
using Xunit.Extensions;
using Xunit.Sdk;
namespace WebApiStudy.IntegrationTest
{
/// <summary>
/// 测试服务器,全局共享设置
/// </summary>
[CollectionDefinition(name:"GlobalTestServer")]
public class TestServerFixtureSetup : ICollectionFixture<TestServerFixture>
{
}
}

@ -0,0 +1,36 @@
using System;
using Microsoft.AspNetCore.TestHost;
using Xunit;
using WebApiStudy.IntegrationTest;
using System.Net;
namespace ConfigureStudy.WebAppTest
{
[Collection(name:"GlobalTestServer")]
public class TestDemo:IDisposable
{
private TestServer testServer;
public TestDemo(TestServerFixture testServer)
{
this.testServer = testServer.TestServer;
}
[Fact]
public void Test()
{
var client = testServer.CreateClient();
var apiResponse= client.GetAsync("/api/values").Result;
Assert.True(apiResponse.StatusCode==HttpStatusCode.OK);
}
public void Dispose()
{
}
}
}

@ -0,0 +1,37 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28010.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConfigureStudy.WebApp", "ConfigureStudy.WebApp\ConfigureStudy.WebApp.csproj", "{7EE58B78-7A08-4C39-BB60-2FC210F206A4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConfigureStudy.WebAppTest", "ConfigureStudy.WebAppTest\ConfigureStudy.WebAppTest.csproj", "{FF73E629-5B1D-4192-9E7A-C1C52F20A597}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConfigureStudy.Test", "ConfigureStudy.Test\ConfigureStudy.Test.csproj", "{84D88BC9-85EE-4AFC-A2B0-AC7E6575CAF4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7EE58B78-7A08-4C39-BB60-2FC210F206A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7EE58B78-7A08-4C39-BB60-2FC210F206A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7EE58B78-7A08-4C39-BB60-2FC210F206A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7EE58B78-7A08-4C39-BB60-2FC210F206A4}.Release|Any CPU.Build.0 = Release|Any CPU
{FF73E629-5B1D-4192-9E7A-C1C52F20A597}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FF73E629-5B1D-4192-9E7A-C1C52F20A597}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FF73E629-5B1D-4192-9E7A-C1C52F20A597}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FF73E629-5B1D-4192-9E7A-C1C52F20A597}.Release|Any CPU.Build.0 = Release|Any CPU
{84D88BC9-85EE-4AFC-A2B0-AC7E6575CAF4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{84D88BC9-85EE-4AFC-A2B0-AC7E6575CAF4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{84D88BC9-85EE-4AFC-A2B0-AC7E6575CAF4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{84D88BC9-85EE-4AFC-A2B0-AC7E6575CAF4}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {30750FB2-0FF5-4BED-8F14-EFAAC8F46C46}
EndGlobalSection
EndGlobal
Loading…
Cancel
Save