首次创建单元测试
本文关键字:单元测试 创建 | 更新日期: 2023-09-27 18:25:50
我正在使用asp.net mvc、实体框架6和visualstudio2013创建一个新项目。我想从一开始就直接创建测试,否则它们永远不会创建,但我不确定何时测试以及测试什么。
在我的解决方案中,我有以下项目
数据-我的EF上下文和用于将实体映射到数据库的配置文件实体-我的POCO对象服务-包含每个实体的业务逻辑。将数据加载并保存到我的ef上下文Web-WebApi和MVC网站
现在我需要为数据项目添加一个测试项目吗?我的一部分说"当然是",因为我想确保数据保存在正确的位置,但我的另一部分认为这可能会在服务测试项目中重复?
这是我整理的一个基本测试,但它是一个好的测试,还是毫无意义的测试?
[TestClass]
public class CompanyTest
{
private MyContext _context;
[TestInitialize]
public void Initialize()
{
// set our context
_context = new MyContext();
// add test data
var companies = GetTestData();
// save data
companies.ForEach(s => _context.Companies.Add(s));
_context.SaveChanges();
}
[TestCleanup]
public void Cleanup()
{
var companies = _context.Companies.ToList();
// remove all companies
companies.ForEach(s => _context.Companies.Remove(s));
_context.SaveChanges();
}
[TestMethod]
public void AddCompanies_ShouldReturnTwo()
{
// get data
var companies = _context.Set<Company>().ToList();
// check values
Assert.AreEqual(2, companies.Count);
}
[TestMethod]
public void GetCompany_CheckDataInEachField()
{
var companies = _context.Set<Company>().ToList();
Company company;
// first company
company = companies[0];
Assert.AreEqual("ABC Construction", company.Name);
Assert.AreEqual("ABC001", company.Reference);
Assert.AreEqual("10-15 TemplateStreet", company.Street);
Assert.AreEqual("Brierley Hill", company.Town);
Assert.AreEqual("Somerset", company.County);
Assert.AreEqual("England", company.Country);
Assert.AreEqual("TY1 1AB", company.Postcode);
// second company
company = companies[1];
Assert.AreEqual("Baseline Design", company.Name);
Assert.AreEqual("BAD0023", company.Reference);
Assert.AreEqual("23-25 Hedlyn Road", company.Street);
Assert.AreEqual("Oxford", company.Town);
Assert.AreEqual("Oxford", company.County);
Assert.AreEqual("England", company.Country);
Assert.AreEqual("OX1 4FG", company.Postcode);
}
private List<Company> GetTestData()
{
// companies
return new List<Company>
{
new Company{ Name="ABC Construction", Reference="ABC001", Street="10-15 TemplateStreet", Town="Brierley Hill", County="Somerset", Country="England", Postcode="TY1 1AB",DateAdded=DateTime.Now},
new Company{ Name="Baseline Design", Reference="BAD0023", Street="23-25 Hedlyn Road", Town="Oxford", County="Oxford", Country="England", Postcode="OX1 4FG",DateAdded=DateTime.Now}
};
}
}
那么,我只需要服务和Web的测试项目吗?
如果有人知道什么时候以及如何设置测试的好参考资料,请告诉我。
您的问题太宽泛,无法给出一个好的答案,我个人的方法是测试应用程序的每一层,当然是数据和服务层。在服务层中,目标应该是测试业务逻辑的正确性,因此数据通常应该被模拟或伪造,从而隔离层。正如我之前提到的,有很多方法可以测试应用程序,即使你想测试你的javascript,也可以让你有一个想法
- 通用存储库和工作单元模式、实体框架、单元测试、Autofac IoC容器和ASP.NET MVC-第1部分
- 通用存储库和工作单元模式、实体框架、单元测试、Autofac IoC容器和ASP.NET MVC-第2部分
- 通用存储库和工作单元模式、实体框架、单元测试、Autofac IoC容器和ASP.NET MVC-第3部分
- 通用存储库和工作单元模式、实体框架、单元测试、Autofac IoC容器和ASP.NET MVC-第4部分
或从msdn:开始
第13章:单元测试Web应用程序
还有很多关于这个主题的书籍和视频,请慢慢来,这不是一个容易的学习曲线,但却是开发人员工具带上的必备知识