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#

7 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;
7 years ago
namespace xUnitStudy.WebApi.Test
{
/// <summary>
/// 测试类级别的共享(类内所有测试用例,共享一个类的实例)
/// </summary>
public class UseIClassFixtureTest:IClassFixture<ClassFixtureDemo>, IDisposable
7 years ago
{
/* 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()
{
}
7 years ago
}
}