diff --git a/xUnitStudy.Model/xUnitStudy.Model.csproj b/xUnitStudy.Model/xUnitStudy.Model.csproj
index 6fdccdd..d6a6233 100644
--- a/xUnitStudy.Model/xUnitStudy.Model.csproj
+++ b/xUnitStudy.Model/xUnitStudy.Model.csproj
@@ -45,6 +45,7 @@
+
diff --git a/xUnitStudy.Model/xUnitStudy/AssertEqualDemo.cs b/xUnitStudy.Model/xUnitStudy/AssertEqualDemo.cs
new file mode 100644
index 0000000..bce71cf
--- /dev/null
+++ b/xUnitStudy.Model/xUnitStudy/AssertEqualDemo.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace xUnitStudy.Model
+{
+ public class AssertEqualDemo : IEqualityComparer
+ {
+ public int Id { get; set; }
+
+ public string Name { get; set; }
+
+ public bool Equals(AssertEqualDemo x, AssertEqualDemo y)
+ {
+ return x.Id == y.Id;
+ }
+
+ public int GetHashCode(AssertEqualDemo obj)
+ {
+ return Id;
+ }
+ }
+}
diff --git a/xUnitStudy.WebApi.Test/UseXUnitAssertTest.cs b/xUnitStudy.WebApi.Test/UseXUnitAssertTest.cs
index 6ba1cb6..b384986 100644
--- a/xUnitStudy.WebApi.Test/UseXUnitAssertTest.cs
+++ b/xUnitStudy.WebApi.Test/UseXUnitAssertTest.cs
@@ -4,25 +4,284 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit;
+using xUnitStudy.Model;
namespace xUnitStudy.WebApi.Test
{
-
- public class UseXUnitAssertTest:IDisposable
+ [Trait("测试断言分组", "默认组")]
+ public class UseXUnitAssertTest : IDisposable
{
public UseXUnitAssertTest()
{
}
- public void Dispose()
+
+ [Fact]
+ public void Equal_String_Test()
+ {
+ Assert.Equal("ping", "ping");
+ }
+
+ [Fact]
+ public void NotEqual_String_Test()
+ {
+ Assert.NotEqual("ping", "ack");
+ }
+
+ ///
+ /// 断言 string 相等
+ /// 设置大小写、行尾符、空白符号 比较选项
+ ///
+ [Fact]
+ public void Equal_String_Ignore_Test()
+ {
+ //ignoreCase:忽略字符大小写差异.如果为true,比较时忽略字符大小写
+ Assert.Equal("ABcdEF", "abcdef", ignoreCase: true);
+
+ //ignoreLineEndingDifferences:忽略行尾结束符差异。设置为true,则将\rn、\r和\n视为等效。
+ Assert.Equal("One line\r\n", "one line\n", ignoreCase: true, ignoreLineEndingDifferences: true);
+
+ //ignoreWhiteSpaceDifferences:忽略"空白"(空格、Tab)差异。设置为true,则将空格和制表符(以任何非零量)视为等效。
+ Assert.Equal("One line\r", "one line\n", ignoreCase: true, ignoreLineEndingDifferences: true, ignoreWhiteSpaceDifferences: true);
+ }
+
+ [Fact]
+ public void Equal_Double_Test()
+ {
+ //注意:先舍入,然后再比较
+ //舍入规则:四舍五入
+ //精度范围[0,15]位小数
+
+ Assert.Equal(1.14d, 1.11d, precision: 1);
+ Assert.Equal(1.15d, 1.19d, precision: 1);
+
+ Assert //1.14d 约等于1.1 而1.15d 约等于1.2 所以不相等
+ .NotEqual(1.14d, 1.15d, precision: 1);
+
+ //四舍五入到2位小数精度,相等
+ Assert.Equal(2.123d, 2.124d, 2);
+
+ //四舍五入到3位小数精度,相等
+ Assert.Equal(3.1234d, 3.1231d, 3);
+
+ //四舍五入到4位小数精度,不等
+ Assert.NotEqual(3.12345d, 3.12349d, 4);
+
+ //四舍五入到整数,相等
+ Assert.Equal(15d, 15.111d, precision: 0);
+
+ //没有小数位,四舍五入到整数
+ Assert.Equal(15d, 15d, precision: 0);
+ }
+
+ [Fact]
+ public void NotEqual_Double_Test()
+ {
+ //注意:先舍入,然后再比较
+ //舍入规则:四舍五入
+ //精度范围[0,15]位小数
+
+ Assert //1.14d 约等于1.1 而1.15d 约等于1.2 所以不相等
+ .NotEqual(1.14d, 1.15d, precision: 1);
+
+ //舍入到2位小数精度,相等
+ Assert.NotEqual(2.124d, 2.126d, 2);
+
+ //舍入到3位小数精度,相等
+ Assert.NotEqual(3.1234d, 3.1239d, 3);
+
+ //舍入到4位小数精度,不等
+ Assert.NotEqual(3.12346d, 3.12341d, 4);
+
+ //舍入到整数,相等
+ Assert.NotEqual(16d, 15.111d, precision: 0);
+
+ //没有小数位,舍入到整数
+ Assert.NotEqual(16d, 160d, precision: 0);
+ }
+
+ [Fact]
+ public void Equal_Decimal_Test()
+ {
+ //注意:先舍入,然后再比较
+ //舍入规则:四舍五入
+ //精度范围[0,15]位小数
+
+ Assert.Equal(1.14M, 1.11M, precision: 1);
+ Assert.Equal(1.15M, 1.19M, precision: 1);
+
+ Assert //1.14M 约等于1.1 而1.15M 约等于1.2 所以不相等
+ .NotEqual(1.14M, 1.15M, precision: 1);
+
+ //四舍五入到2位小数精度,相等
+ Assert.Equal(2.123M, 2.124M, 2);
+
+ //四舍五入到3位小数精度,相等
+ Assert.Equal(3.1234M, 3.1231M, 3);
+
+ //四舍五入到4位小数精度,不等
+ Assert.NotEqual(3.12345M, 3.12349M, 4);
+
+ //四舍五入到整数,相等
+ Assert.Equal(15M, 15.111M, precision: 0);
+
+ //没有小数位,四舍五入到整数
+ Assert.Equal(15M, 15M, precision: 0);
+ }
+
+ [Fact]
+ public void NotEqual_Decimal_Test()
+ {
+ //注意:先舍入,然后再比较
+ //舍入规则:四舍五入
+ //精度范围[0,15]位小数
+
+ Assert //1.14M 约等于1.1 而1.15M 约等于1.2 所以不相等
+ .NotEqual(1.14M, 1.15M, precision: 1);
+
+ //四舍五入到2位小数精度,不等
+ Assert.NotEqual(2.123M, 2.129M, 2);
+
+ //四舍五入到3位小数精度,不等
+ Assert.NotEqual(3.1234M, 3.1236M, 3);
+
+ //四舍五入到4位小数精度,不等
+ Assert.NotEqual(3.12345M, 3.12349M, 4);
+
+ //四舍五入到整数,不等
+ Assert.NotEqual(15M, 15.501M, precision: 0);
+
+ //没有小数位,四舍五入到整数
+ Assert.NotEqual(29M, 15M, precision: 0);
+ }
+
+ [Fact]
+ public void Equal_Datetime_Test()
{
-
+ Assert.Equal(DateTime.Now, DateTime.Now.AddSeconds(1), TimeSpan.FromSeconds(2));
+ Assert.Equal(DateTime.Now, DateTime.Now.AddMinutes(1), TimeSpan.FromMinutes(2));
}
+ ///
+ /// Equal 泛型版本
+ /// 泛型版基本上都有简化写法
+ ///
[Fact]
- public void Test()
+ public void Equal_GenericT_Test()
{
-
+ //形如:Assert.Equal(Expected T, Actual T);
+ //常见类型都可以简化,或是有更好的非泛型版,此时,一般用非泛型版
+
+ Assert.Equal("ping", "ping");
+ Assert //基本使用非泛型版本
+ .Equal("ping", "ping");
+
+ Assert.Equal(3, 3);
+ Assert //简化为
+ .Equal(3, 3);
+
+ Assert.Equal(3, 3);
+ Assert //简化为
+ .Equal(3L, 3L);
+
+ Assert.Equal(5.5d, 5.5d);
+ Assert //简化为
+ .Equal(5.5d, 5.5d);
+
+ Assert.Equal(5.5M, 5.5M);
+ Assert //简化为
+ .Equal(5.5M, 5.5M);
+
+ Assert.Equal(DateTime.Now.Date, DateTime.Now.Date);
+ Assert //简化为
+ .Equal(DateTime.Now.Date, DateTime.Now.Date);
+
+ //类或其它自定义结构比较,可以使用
+
+ var obj = new object();
+ Assert.Equal