单元测试通过

master
bicijinlian 4 years ago
parent 2c3223ac6b
commit cd2d8a6a43

@ -5,19 +5,23 @@ using System.Data.Odbc;
namespace AccessStudy.Core
{
public class OdbcUtil:IDisposable
/// <summary>
/// 注意:参数用?代替,以顺序计数!
/// 如select * from tableA where id=? and age>?
/// </summary>
public class OdbcUtil : IDisposable
{
public OdbcConnection DbConnection { get; set; }
public OdbcUtil()
{
var accessFile = $"{AppDomain.CurrentDomain.BaseDirectory}AccessDB\\Demo.accdb";
var connetString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={accessFile}";
var connetString = $@"Driver={{Microsoft Access Driver (*.mdb, *.accdb)}};Dbq={accessFile};";
DbConnection = new OdbcConnection(connetString);
}
public OdbcUtil(string connetString)
{
{
DbConnection = new OdbcConnection(connetString);
}
@ -71,7 +75,7 @@ namespace AccessStudy.Core
adapter.Fill(dataSet);
}
catch(Exception ex)
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
@ -86,7 +90,7 @@ namespace AccessStudy.Core
/// <summary>
/// 获取DataSet
/// </summary>
public DataSet GetDataSet(string sqlText, List<OdbcParameter> parameters=null)
public DataSet GetDataSet(string sqlText, List<OdbcParameter> parameters = null)
{
DataSet dataSet = new DataSet();
try
@ -99,11 +103,11 @@ namespace AccessStudy.Core
CommandText = sqlText,
};
if (parameters !=null)
{
if (parameters != null)
{
command.Parameters.AddRange(parameters.ToArray());
}
var adapter = new OdbcDataAdapter(command);
adapter.Fill(dataSet);
@ -132,9 +136,9 @@ namespace AccessStudy.Core
/// <summary>
/// 获取DataTable
/// </summary>
public DataTable GetDataTable(string sqlText, List<OdbcParameter> parameters=null)
public DataTable GetDataTable(string sqlText, List<OdbcParameter> parameters = null)
{
DataSet dataSet = GetDataSet(sqlText,parameters);
DataSet dataSet = GetDataSet(sqlText, parameters);
return dataSet.Tables[0];
}
@ -174,7 +178,7 @@ namespace AccessStudy.Core
/// 获取DataReader
/// 切记:用完之后主动关闭连接
/// </summary>
public OdbcDataReader GetDataReader(string sqlText, List<OdbcParameter> parameters=null)
public OdbcDataReader GetDataReader(string sqlText, List<OdbcParameter> parameters = null)
{
OdbcDataReader dataReader = null;
try
@ -184,7 +188,7 @@ namespace AccessStudy.Core
{
Connection = DbConnection,
CommandType = CommandType.Text,
CommandText =sqlText,
CommandText = sqlText,
};
if (parameters != null)
@ -211,7 +215,7 @@ namespace AccessStudy.Core
/// 获取第一行第一列的值
/// 不存在则为null
/// </summary>
public object GetScalar(string sqlText, List<OdbcParameter> parameters=null)
public object GetScalar(string sqlText, List<OdbcParameter> parameters = null)
{
object result = null;
@ -234,7 +238,7 @@ namespace AccessStudy.Core
}
catch (Exception ex)
{
throw ex;
throw ex;
}
finally
{
@ -305,7 +309,7 @@ namespace AccessStudy.Core
public void Dispose()
{
if (DbConnection.State==ConnectionState.Open)
if (DbConnection.State == ConnectionState.Open)
{
DbConnection.Close();
}

@ -8,7 +8,7 @@ using System.Text;
namespace AccessStudy.Core
{
public class StudentServer
public class StudentDal
{
private OledbUtil dbUtil = new OledbUtil();
@ -39,6 +39,21 @@ namespace AccessStudy.Core
return DataTable2Model(dataTable).FirstOrDefault();
}
/// <summary>
/// 按名称查询学生
/// </summary>
public Student Get(string studentName)
{
var querySql = "select * from Student where Name=@studentName";
var paras = new List<OleDbParameter>()
{
new OleDbParameter("studentName",studentName)
};
var dataTable = dbUtil.GetDataTable(querySql, paras);
return DataTable2Model(dataTable).FirstOrDefault();
}
/// <summary>
/// 添加学生
/// </summary>
@ -47,11 +62,10 @@ namespace AccessStudy.Core
var querySql = "INSERT INTO `Student` (Name,Age,Address,School) VALUES(@Name,@Age,@Address,@School); ";
var paras = new List<OleDbParameter>()
{
new OleDbParameter("Id",student.Id),
new OleDbParameter("Name",student.Name),
new OleDbParameter("Age",student.Age),
new OleDbParameter("Address",student.Address),
new OleDbParameter("School",student.School),
new OleDbParameter("@Name",student.Name),
new OleDbParameter("@Age",student.Age),
new OleDbParameter("@Address",student.Address),
new OleDbParameter("@School",student.School),
};
var effectRow = dbUtil.ExecuteNonQuery(querySql, paras);
@ -67,11 +81,11 @@ namespace AccessStudy.Core
var querySql = "Update Student Set Name=@Name,Age=@Age,Address=@Address,School=@School where Id=@Id;";
var paras = new List<OleDbParameter>()
{
new OleDbParameter("Id",student.Id),
new OleDbParameter("Name",student.Name),
new OleDbParameter("Age",student.Age),
new OleDbParameter("Address",student.Address),
new OleDbParameter("School",student.School),
new OleDbParameter("Id",student.Id),
};
var effectRow = dbUtil.ExecuteNonQuery(querySql, paras);
@ -98,7 +112,7 @@ namespace AccessStudy.Core
/// <summary>
/// DataTable转实体列表
/// </summary>
public List<Student> DataTable2Model(DataTable dTable)
private List<Student> DataTable2Model(DataTable dTable)
{
List<Student> students = new List<Student>();

@ -1,17 +1,121 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Odbc;
using Xunit;
using Shouldly;
using AccessStudy.Core;
namespace AccessStudy.CoreTest
{
public class OdbcUtilTest
public class OdbcUtilTest:IDisposable
{
private readonly OdbcUtil _dbUtil;
public OdbcUtilTest()
{
_dbUtil = new OdbcUtil();
}
[Fact]
public void DbUtil_NotNull_Test()
{
Assert.NotNull(_dbUtil);
}
[Fact]
public void DbConnet_Test()
{
var con = _dbUtil.DbConnection;
Assert.NotNull(con);
Action action = () =>
{
con.Open();
con.Close();
con.Dispose();
};
Should.NotThrow(action);
}
[Fact]
public void DataSet_Test()
{
var ds = _dbUtil.GetDataSet("Student");
Assert.NotNull(ds);
Assert.NotNull(ds.Tables);
Assert.True(ds.Tables.Count > 0);
}
[Fact]
public void DataTable_Test()
{
var dt = _dbUtil.GetDataTable("Student");
Assert.NotNull(dt);
}
[Fact]
public void DataReader_Test()
{
Action action = () =>
{
var dataReader = _dbUtil.GetDataReader("Student");
while (dataReader.Read())
{
break;
}
dataReader.Close();
};
Should.NotThrow(action);
}
/// <summary>
/// 参数使用不同
/// SQL语句中用代表参数按参数顺序传参
/// 参数名以不用@开头都可以
/// </summary>
[Fact]
public void Scalar_Test()
{
//
var sqlText = @"select count(*) as Total from Student where Age>? ;";
var paras = new List<OdbcParameter>()
{
new OdbcParameter("@Age",1),
};
var total = (int)_dbUtil.GetScalar(sqlText, paras);
Assert.True(total >= 0);
}
[Fact]
public void Test()
{
public void NonQuery_Test()
{
var sqlText = @"update Student Set Age=Age+1 where Age>? AND Name <>?;";
var paras = new List<OdbcParameter>()
{
new OdbcParameter("Age",1),
new OdbcParameter("Name","王高峰"),
};
var total = _dbUtil.ExecuteNonQuery(sqlText, paras);
Assert.True(total >= 0);
}
public void Dispose()
{
}
}
}

@ -13,7 +13,7 @@ using System.Data.OleDb;
namespace AccessStudy.CoreTest
{
public class OleDbUtilTest:IDisposable
public class OleDbUtilTest : IDisposable
{
private readonly OledbUtil _dbUtil;
@ -34,13 +34,11 @@ namespace AccessStudy.CoreTest
var con = _dbUtil.DbConnection;
Assert.NotNull(con);
Action action = () =>
{
Action action = () =>
{
con.Open();
con.Close();
con.Dispose();
//throw new Exception("特意抛出的异常!");
};
Should.NotThrow(action);
@ -55,7 +53,7 @@ namespace AccessStudy.CoreTest
Assert.NotNull(ds.Tables);
Assert.True(ds.Tables.Count>0);
Assert.True(ds.Tables.Count > 0);
}
[Fact]
@ -68,7 +66,7 @@ namespace AccessStudy.CoreTest
[Fact]
public void DataReader_Test()
{
Action action = () =>
Action action = () =>
{
var dataReader = _dbUtil.GetDataReader("Student");
while (dataReader.Read())
@ -97,7 +95,7 @@ namespace AccessStudy.CoreTest
Assert.True(total >= 0);
}
[Fact]
public void NonQuery_Test()
{
@ -113,8 +111,6 @@ namespace AccessStudy.CoreTest
Assert.True(total >= 0);
}
public void Dispose()
{
}

@ -0,0 +1,62 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Data.Odbc;
using Xunit;
using Shouldly;
using AccessStudy.Core;
namespace AccessStudy.CoreTest
{
public class StudentDalTest:IDisposable
{
private readonly StudentDal _dal;
public StudentDalTest()
{
_dal = new StudentDal();
}
[Fact]
public void GetAll_Test()
{
var all = _dal.GetAll();
Assert.NotNull(all);
}
[Fact]
public void Add_Get_Update_Delete_Test()
{
var guidName = Guid.NewGuid().ToString().Replace("-","");
var student = new Student()
{
Id=0,
Name=guidName,
Age=22,
Address="",
School="Shcool",
};
var addResult = _dal.Add(student);
Assert.True(addResult);
var addStudent = _dal.Get(guidName);
Assert.True(addStudent.Name == student.Name && addStudent.Age == student.Age && addStudent.School == student.School);
addStudent.School = Guid.NewGuid().ToString();
var updateResult = _dal.Update(addStudent);
Assert.True(updateResult);
var delResult = _dal.Delete(addStudent.Id);
Assert.True(delResult);
}
public void Dispose()
{
}
}
}
Loading…
Cancel
Save