???????(UNIT TEST)?о?????
?????????? ???????[ 2010/2/20 14:57:21 ] ????????
1. ????????
1?????????????(Unit Test)??
????????????????????????????е????????????????????????У???????????????????????????????????????????в????????????????л?????????????????????е????????????????????????????????????????????е?????У????????????????????????????????????????????????????????в????????????????????????????????д????????????????????????????????????
2??????????????????(TDD?? Test-Driven Development)??
??????????????????????????????????????????д?κδ????????????д????????????????????????????д????????????????????????????????????????????????????????У????????????????????в????
??????????????£?
1. д??????????
2. ?ó???????????
3. ???в????????????????С?
4. ?ò????????????С?
5. ????????????????????
2. ??????????????
1?? ????????Bug
?????????е???????????????????????????????飬?乤???????п??????????????????????????в????飬????????????????????????????????????????????????????????
???????????????????????????????ò???????????????????????????????????????????????????????????β??????????????????в?????????????????е??????????????????????? - ????????????????????????в??????????????????????????????У?
??????????????????????????????????д???????в???????????Щ????????????????????????????????????????????????????????????????????У????????????????????????????????????С?
2?? ?????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?????????????????????????????????????????????????????????????ε???·???????? ??????????????????????????????????????????????
??????????????????У??????????????????????????????????????????????????????С??????????????????????????Bug????????У??????????????賣?????????????????????????????С?????????????????????佫?????????????Щ??????????????????Bug???棬?????????£???ЩBug?????????????????????????????????????????????????????????????????? ???????????????????????????????????С?
??????????????У????????????????????????д?????????????????????????????????????????Щ???????????????Bug??????????????????????????????????????????£??????????????и???Ч??????????????????????????????????????????????μ?????????????????Ч?????á???????????????????????????????????????????ú????????
1. ????????
1????????????(Unit Test)??
????????????????????????????е??????????????????????У???????????????????????????????????????????в????????????????л?????????????????????е????????????????????????????????????????????е?????У????????????????????????????????????????????????????????в????????????????????????????????д????????????????????????????????????
2?????????????????(TDD?? Test-Driven Development)??
??????????????????????????????????????????д?κδ????????????д??????????????????????????д????????????????????????????????????????????????????????У????????????????????в????
??????????????£?
1. д??????????
2. ?ó???????????
3. ???в????????????????С?
4. ?ò????????????С?
5. ????????????????????
2. ??????????????
1?? ????????Bug
?????????е???????????????????????????????飬?乤???????п??????????????????????????в????飬????????????????????????????????????????????????????????
???????????????????????????????ò???????????????????????????????????????????????????????????β??????????????????в?????????????????е??????????????????????? - ????????????????????????в??????????????????????????????У?
??????????????????????????????????д???????в???????????Щ????????????????????????????????????????????????????????????????????У????????????????????????????????????С?
2?? ?????????
??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ?????????????????????????????????????????????????????????????ε???·???????? ??????????????????????????????????????????????
??????????????????У??????????????????????????????????????????????????????С??????????????????????????Bug????????У??????????????賣?????????????????????????????С?????????????????????佫?????????????Щ??????????????????Bug???棬?????????£???ЩBug?????????????????????????????????????????????????????????????????? ???????????????????????????????????С?
??????????????У????????????????????????д?????????????????????????????????????????Щ???????????????Bug??????????????????????????????????????????£??????????????и???Ч??????????????????????????????????????????????μ?????????????????Ч?????á???????????????????????????????????????????ú????????
????????????????к??
????1??????α?д????????????????
????2??????????д???????????????
????3???????е?????????????????????????
????4???????????????????????
????5??????????????
?????????????????·??????????????????????????????????????????????????????????????????????????????????????????? 100 ?? 1000 ????????????????????????????????1?????????????????????????汾??????????
????????????????????д????????????е????????????ò?????????????????д?????д????????е?????????????????????????????????????
????????????????????????????????????????????η??????Bug????????????????????????????????????Σ?Bug????????????????????????????????????????????á??????????????????????????????????????????????о??????????????в?????Ч????????????????? ??????????????????????£?????????????????????????????????????????????????????ú??????????????????????????????Bug??????в?????Ρ?
3?? ????????????????????????
????????????????????????????????д??????????????????У??????????????????????????????????????????????????????????????????????????????????????????????в??????????????????????????????????????????????????????????????????????д?????????????????????????к?????????????????????????????????????κ?????????????????д??????????С?????????????????????????????
4?? ??д????????????????????????????????
???д????????????????????????????????????????????????????????????????????????????????????????????????Щ?????к????????
3. ??ν??е??????
?????????????????????????????????????????????α?д?????????????????????????????Nunit????VSNunit????????????
???????????????Users???????????????????е????Users???????????£?
using System;
namespace DB
{
public class users
{
public users()
{
}
private System.String _Password;
public System.String Password
{
get { return _Password; }
set { _Password = value; }
}
private System.DateTime _LastLogon;
public System.DateTime LastLogon
{
get { return _LastLogon; }
set { _LastLogon = value; }
}
private System.String _Name;
public System.String Name
{
get { return _Name; }
set { _Name = value; }
}
private System.String _LogonID;
public System.String LogonID
{
get { return _LogonID; }
set { _LogonID = value; }
}
private System.String _EmailAddress;
public System.String EmailAddress
{
get { return _EmailAddress; }
set { _EmailAddress = value; }
}
}
}
????????????????EntityControl?????ORM?????????????е?????????????????????????е???????????????????????????????????????????
using System;
using System.Reflection;
using System.Data;
using System.Data.SqlClient;
using NHibernate;
using NHibernate.Type;
using NHibernate.Cfg;
using NHibernate.Dialect;
using NHibernate.Tool.hbm2ddl;
using System.Collections;
namespace DB
{
///
/// Summary description for UsersControl.
///
public class EntityControl
{
private static EntityControl entity;
private static ISessionFactory sessions;
private static Configuration cfg;
private static Dialect dialect;
public static EntityControl CreateControl()
{
if (entity == null)
{
BuildSessionFactory();
if (entity == null)
entity = new EntityControl();
}
return entity;
}
private static void BuildSessionFactory()
{
ExportSchema( new string[] { "users.hbm.xml"
?? "Department.hbm.xml"
?? "Employee.hbm.xml"
} ?? false);
}
public void AddEntity(object entity)
{
ISession s = sessions.OpenSession();
ITransaction t = s.BeginTransaction();
try
{
s.Save(entity);
t.Commit();
}
catch(Exception e)
{
t.Rollback();
throw e;
}
finally
{
s.Close();
}
}
public void UpdateEntity(object entity??object key)
{
ISession s = sessions.OpenSession();
ITransaction t = s.BeginTransaction();
try
{
s.Update(entity??key);
t.Commit();
}
catch(Exception e)
{
t.Rollback();
throw e;
}
finally
{
s.Close();
}
}
public void DeleteEntity(object entity)
{
ISession s = sessions.OpenSession();
ITransaction t = s.BeginTransaction();
try
{
s.Delete(entity);
t.Commit();
}
catch(Exception e)
{
t.Rollback();
throw e;
}
finally
{
s.Close();
}
}
public object GetEntity(System.Type theType?? object id)
{
object obj;
ISession s = sessions.OpenSession();
ITransaction t = s.BeginTransaction();
obj = s.Load( theType?? id);
t.Commit();
s.Close();
return obj;
}
public IList GetEntities(string query)
{
IList lst;
ISession s = sessions.OpenSession();
ITransaction t = s.BeginTransaction();
lst = s.Find(query);
t.Commit();
s.Close();
return lst;
}
public IList GetEntities(string query?? object value?? IType type)
{
IList lst;
ISession s = sessions.OpenSession();
ITransaction t = s.BeginTransaction();
lst = s.Find(query??value??type);
t.Commit();
s.Close();
return lst;
}
#region "Schema deal"
private static void ExportSchema(string[] files)
{
ExportSchema(files?? true);
}
private static void ExportSchema(string[] files?? bool exportSchema)
{
cfg = new Configuration();
for (int i=0; i
{
cfg.AddResource("DB." + files[i]?? Assembly.Load("DB"));
}
if(exportSchema) new SchemaExport(cfg).Create(true?? true);
sessions = cfg.BuildSessionFactory( );
dialect = NHibernate.Dialect.Dialect.GetDialect();
}
///
/// Drops the schema that was built with the TestCase??s Configuration.
///
private static void DropSchema()
{
new SchemaExport(cfg).Drop(true?? true);
}
private static void ExecuteStatement(string sql)
{
ExecuteStatement(sql?? true);
}
private static void ExecuteStatement(string sql?? bool error)
{
IDbConnection conn = null;
IDbTransaction tran = null;
try
{
if (cfg == null)
cfg = new Configuration();
NHibernate.Connection.IConnectionProvider prov = NHibernate.Connection.ConnectionProviderFactory.NewConnectionProvider(cfg.Properties);
conn = prov.GetConnection();
tran = conn.BeginTransaction();
IDbCommand comm = conn.CreateCommand();
comm.CommandText = sql;
comm.Transaction = tran;
comm.CommandType = CommandType.Text;
comm.ExecuteNonQuery();
tran.Commit();
}
catch(Exception exc)
{
if (tran != null)
tran.Rollback();
if (error)
throw exc;
}
finally
{
if (conn != null)
conn.Close();
}
}
#endregion
}
}
??????????????????????????????????п???????
??????????????????????????????ζ?????????д??????????
??????????????---UnitTest.cs??????????У???????????????????
using NUnit.Framework;
???????????????????Attribute?TestFixture??Nunit?????????????????????????????????????
[TestFixture]
public class UnitTest
????????????????????
private EntityControl control;
[SetUp]
public void SetUp()
{
control = EntityControl.CreateControl();
}
[Setup]??????????????????????Щ?????????????????????????У????????????????????????????????????е?Constructor.
??????????????β?????????????????
[Test]
public void AddTest()
{
users user = new users();
user.LogonID = "1216";
user.Name = "xian city1";
user.EmailAddress = "tim.wang@grapecity.com1";
control.AddEntity(user);
users u2 =(users) control.GetEntity(typeof(users)??user.LogonID);
Assert.IsTrue(
u2.Name.Equals("xian city1") &&
u2.EmailAddress.Equals("tim.wang@grapecity.com1")
);
Assert.IsFalse(
u2.Name.Equals("xian city") &&
u2.EmailAddress.Equals("tim.wang@grapecity.com")
);
}
??????????????У?????????????????????????AddEntity??????????????У??????????????????????е????????????????????GetEntity??????????????????????????????????????????????б?????ж??????????????????????????????????β??????????????????????????????????????????????????????????á?
???????????????????????
[Test]
[Ignore("Finished Test")]
public void UpdateTest()
{
users u1 =(users) control.GetEntity(typeof(users)??"112");
Assert.IsTrue(
u1.Password == "123" &&
u1.EmailAddress == "234"
);
u1.Password = "aaa";
u1.EmailAddress = "tim";
control.UpdateEntity(u1??"112");
Assert.IsFalse(
u1.Password == "123" ||
u1.EmailAddress == "234"
);
Assert.IsTrue(
u1.Password == "aaa" &&
u1.EmailAddress == "tim"
);
}
????????????????????????д???????????????????????Ч???
?????????????????????????????????д?????????????????????????????????????????????????????????????????????????????????????????????????????д?????????????????????????????????????????顣
???????Щ?????????е??????????д??????????????????????????????????????д
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11