You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
xUnitStudy/xUnitStudy.WebApi.Test/UseFixture/UseClassFixtureTest.cs

122 lines
4.4 KiB
C#

Squashed commit of the following: commit 8ce3e1acdf718a2259bb798a0428d2dd22a36d0e Author: bicijinlian <bicijinlian@163.com> Date: Sat Aug 4 22:58:33 2018 +0800 Controller 测试 commit 495b9dbf9e6b3b0503ddedf97ca085a7bd47e735 Author: bicijinlian <bicijinlian@163.com> Date: Sat Aug 4 22:47:02 2018 +0800 完善断言 commit 81b141418ab155e643d94284f36b8d13e6480dff Author: bicijinlian <bicijinlian@163.com> Date: Sat Aug 4 11:47:29 2018 +0800 共享数据完成 commit a6a5566d3a58886cf859637a4ccd153eb6faa8fd Author: bicijinlian <bicijinlian@163.com> Date: Sat Aug 4 10:01:12 2018 +0800 共享数据 commit 0ca4b3541d86df607b30dc86eb34799ffe512c31 Author: bicijinlian <bicijinlian@163.com> Date: Fri Aug 3 22:37:17 2018 +0800 测试类共享数据 commit 5aab2368cae6f59bfc21922d518ed0d84d96068b Author: bicijinlian <bicijinlian@163.com> Date: Fri Aug 3 17:40:49 2018 +0800 Assert 基本学完 commit c8e735b831a8fb73d6f53aedf6698d448f481c42 Author: bicijinlian <bicijinlian@163.com> Date: Fri Aug 3 17:13:43 2018 +0800 study commit 257168e8ce474a4808d5975c3990c6b7cdbc4327 Author: bicijinlian <bicijinlian@163.com> Date: Fri Aug 3 16:32:44 2018 +0800 Contains 学习 commit 34c3763943aa62885d8c5064aed2c40e1508400a Author: bicijinlian <bicijinlian@163.com> Date: Fri Aug 3 00:24:58 2018 +0800 断言学习 commit 763b9c33f122d70ef6b306bad2d054b4e36e0a7f Author: bicijinlian <bicijinlian@163.com> Date: Thu Aug 2 20:22:24 2018 +0800 断言学习 commit b1f9945fab2cb9e9fa95aff1e4947ed029442a48 Author: bicijinlian <bicijinlian@163.com> Date: Wed Aug 1 22:45:14 2018 +0800 study commit b7c75492279c578c2ac2659b34eb5bcc4756a0de Author: bicijinlian <bicijinlian@163.com> Date: Wed Aug 1 22:22:50 2018 +0800 分组优化 commit d72a992d72e68787d20a3535cfc348494eac5ad3 Author: bicijinlian <bicijinlian@163.com> Date: Wed Aug 1 22:12:34 2018 +0800 xUnit 学习 commit 3075a8b33ff47222ac262d05fe22c6688cc8c648 Author: bicijinlian <bicijinlian@163.com> Date: Wed Aug 1 08:51:25 2018 +0800 开发常规提交 commit 98e4059cb7545552e0cb506a2425f72de08ac176 Author: bicijinlian <bicijinlian@163.com> Date: Tue Jul 31 07:34:03 2018 +0800 Study commit 2615d3dedfcde8659748d1fe76e35c5bbf4a5068 Author: bicijinlian <bicijinlian@163.com> Date: Mon Jul 30 23:04:31 2018 +0800 Autofac commit 8fcd062f42e9151d4551361eed1c4d1544098c64 Merge: cd3b362 8639734 Author: bicijinlian <bicijinlian@163.com> Date: Mon Jul 30 15:52:53 2018 +0800 Merge tag 'ReleaseV1.0' into develop V1.0
6 years ago
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit;
using Xunit.Abstractions;
using Xunit.Extensions;
using Xunit.Sdk;
using xUnitStudy.Model;
namespace xUnitStudy.WebApi.Test
{
/// <summary>
/// 测试类级别的共享(类内所有测试用例,共享一个类的实例)
/// </summary>
public class UseIClassFixtureTest:IClassFixture<ClassFixtureDemo>, IDisposable
{
/* IClassFixture使:
*
* 01Fixture,IDisposable
* 02 IClassFixture<T>T Fixture
* 03Fixture使Context.
* xUnit.Net
*
*
*
*
*
* xUnit Fixture
*
* b --> Fixture --> --> 1 --> Dispose() --> -->
*
* a --> Fixture --> --> 2 --> Dispose() --> -->
*
* x --> Fixture --> --> 2 --> Dispose() --> -->
*
* m --> Fixture--> --> 2 --> Dispose() --> -->
* ........
*
*
*
*
*
*
* 使
*
* 使
*/
ClassFixtureDemo fixtureDemo;
public UseIClassFixtureTest(ClassFixtureDemo fixture)
{
this.fixtureDemo = fixture;
}
[Fact]
public void NotNull_Test()
{
Assert.NotNull(fixtureDemo);
}
[Fact]
public void GetPersons_Test()
{
var persons = fixtureDemo.Persons;
//因为共享所以数量不一定是初始值3
//Assert.Equal(3,fixtureDemo.Persons.Count);
}
[Fact]
public void AddPerson_Test()
{
var callTimes_start = fixtureDemo.CallTimes;
var person1 = new Person() { Id=1,FirstName="first",LastName="last"};
var person2 = new Person() {Id=200};
//因为共享在不能保证单元测试的执行先后顺充时或者并行执行单元测试时可能id=1的项已被删除也可能没被删除
//所以result1可能失败也可能成功
var result1 = fixtureDemo.AddPerson(person1);
var result2 = fixtureDemo.AddPerson(person2);
//Assert.False(result1.result); 执行成功与否,取决于添加和删除单元测试的执行顺序。因为执行顺序不能确定,所以结果不定。
Assert.True(result2.result);
Assert.Equal(4, fixtureDemo.Persons.Count);
Assert.Contains(person2, fixtureDemo.Persons);
var callTimes_end = fixtureDemo.CallTimes;
Assert.Equal(2, callTimes_end - callTimes_start);
}
[Fact]
public void RemovePerson_Test()
{
var person1 = new Person() { Id = 1, FirstName = "first", LastName = "last" };
var person2 = new Person() { Id = 100 };
var result1 = fixtureDemo.RemovePerson(person1);
var result2 = fixtureDemo.RemovePerson(person2);
Assert.True(result1.result);
Assert.False(result2.result);
Assert.DoesNotContain(person1, fixtureDemo.Persons);
Assert.DoesNotContain(person2, fixtureDemo.Persons);
}
public void Dispose()
{
}
}
}