From 3e59500c8f9727f10f84ca242247b81744190542 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sun, 11 Dec 2022 16:17:17 +0800 Subject: [PATCH] Add unit test --- .../SqlServerTest/SqlServerTest.csproj | 1 + Src/Asp.Net/SqlServerTest/UnitTest/Main.cs | 1 + Src/Asp.Net/SqlServerTest/UnitTest/UTran3.cs | 148 ++++++++++++++++++ 3 files changed, 150 insertions(+) create mode 100644 Src/Asp.Net/SqlServerTest/UnitTest/UTran3.cs diff --git a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj index 51928bfab..bf9f9d4e2 100644 --- a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj +++ b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj @@ -203,6 +203,7 @@ + diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs index faa118585..222b2dacb 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/Main.cs @@ -119,6 +119,7 @@ namespace OrmTest Queryable2(); QueryableAsync(); AopTest(); + UTran3.Init(); //Thread(); //Thread2(); //Thread3(); diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UTran3.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UTran3.cs new file mode 100644 index 000000000..2364c3972 --- /dev/null +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UTran3.cs @@ -0,0 +1,148 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest +{ + public class UTran3 + { + public static void Init() + { + AdoTran(); + Tran(); + RollTest().GetAwaiter().GetResult(); + Tran2(); + } + + private static void AdoTran() + { + var db = NewUnitTest.Db; + db.CodeFirst.InitTables(); + db.DbMaintenance.TruncateTable(); + db.Insertable(new UTran121()).ExecuteCommand(); + for (int i = 0; i < 1000; i++) + { + AdoTest(i).GetAwaiter().GetResult(); + } + var id = db.Queryable().ToList().First().ID; + if (id != 2000) + { + throw new Exception("unit error"); + } + + } + + public static async Task AdoTest(int i) + { + var db = NewUnitTest.Db; + await db.Ado.BeginTranAsync(); + + await db.Updateable() + .SetColumns(it => it.ID == it.ID+1) + .Where(it=>true) + .ExecuteCommandAsync(); + + await db.Updateable() + .SetColumns(it => it.ID == it.ID + 1) + .Where(it => true) + .ExecuteCommandAsync(); + + await db.Ado.CommitTranAsync(); + Console.WriteLine("ok"+i); + } + + + private static void Tran2() + { + var db = NewUnitTest.Db; + db.CodeFirst.InitTables(); + db.DbMaintenance.TruncateTable(); + db.Insertable(new UTran121()).ExecuteCommand(); + for (int i = 0; i < 1000; i++) + { + Test(i); + } + + } + + + private static void Tran() + { + var db = NewUnitTest.Db; + db.CodeFirst.InitTables(); + db.DbMaintenance.TruncateTable(); + db.Insertable(new UTran121()).ExecuteCommand(); + for (int i = 0; i < 1000; i++) + { + Test(i).GetAwaiter().GetResult(); + } + var id = db.Queryable().ToList().First().ID; + if (id != 2000) + { + throw new Exception("unit error"); + } + } + + public static async Task Test(int i) + { + var db = NewUnitTest.Db; + await db.BeginTranAsync(); + + await db.Updateable() + .SetColumns(it => it.ID == it.ID + 1) + .Where(it => true) + .ExecuteCommandAsync(); + + await db.Updateable() + .SetColumns(it => it.ID == it.ID + 1) + .Where(it => true) + .ExecuteCommandAsync(); + + await db.CommitTranAsync(); + Console.WriteLine("ok" + i); + } + + public static async Task RollTest() + { + int i = 0; + var db = NewUnitTest.Db; + db.CodeFirst.InitTables(); + db.DbMaintenance.TruncateTable(); + db.Insertable(new UTran121() { ID=100}).ExecuteCommand(); + + try + { + Console.WriteLine( db.Queryable().First().ID); + + await db.BeginTranAsync(); + + await db.Updateable() + .SetColumns(it => it.ID == it.ID + 1) + .Where(it => true) + .ExecuteCommandAsync(); + + Console.WriteLine(db.Queryable().First().ID); + + throw new Exception(""); + + await db.CommitTranAsync(); + } + catch (Exception ex) + { + await db.RollbackTranAsync(); + if (db.Queryable().First().ID != 100) + { + throw new Exception("unit error"); + } + } + Console.WriteLine("ok" + i); + } + public class UTran121 + { + public int ID { get; set; } + } + } +}