【发布时间】:2012-03-28 08:36:05
【问题描述】:
我在业务逻辑层创建了以下示例方法。我的数据库不允许名称和父列为空:
public void Insert(string catName, long catParent)
{
EntityContext con = new EntityContext();
Category cat = new Category();
cat.Name = catName;
cat.Parent = catParent;
con.Category.AddObject(cat);
con.SaveChanges();
}
所以我对此进行单元测试并测试空名称和空父级将失败。为了解决这个问题,我必须重构插入方法如下:
public void Insert(string catName, long catParent)
{
//added to pass the test
if(string.IsNullOrEmpty(catName)) throw new InvalidOperationException("wrong action. name is empty.");
long parent;
if(long.TryParse(catParent, out parent) == false) throw new InvalidOperationException("wrong action. parent didn't parsed.");
//real bussiness logic
EntityContext con = new EntityContext();
Category cat = new Category();
cat.Name = catName;
cat.Parent = parent;
con.Category.AddObject(cat);
con.SaveChanges();
}
我的整个业务层都是对数据库的简单调用。所以现在我再次验证数据!我已经计划在 UI 中进行验证并在 UI 测试单元中测试这类东西。除了验证相关任务之外,我应该在我的业务逻辑方法中测试什么?如果没有要进行单元测试的东西,为什么每个人都说“对所有层进行单元测试”以及我在网上找到很多类似的东西?
【问题讨论】:
标签: asp.net unit-testing testing webforms mvp