如何写一体化和系统的测试Asp.net 视
-
26-09-2019 - |
题
我的申请
我有一个应用程序设计,看起来是这样的:
- 网络应用程序层asp.net 软应用程序与控制和风景,使用POCOs和电话服务
- 服务层-业务流程,使用POCOs并呼吁库
- 数据层中的储存库,使用POCOs和沟通的模型形式为EF模式的一部分,这同一层
- POCO层定义的所有类别使用之间的通信之间的这些层
所以我的数据层是完全透明的,以数据模型的执行情况,因为上层不要使用的数据实体所有。
测试
尽管我理解单元、综合和系统测试(有关系Asp.net 视)是这样的:
- 单元测试-这个是容易的。嘲笑对象耦和注入他们在你的单元的测试,以便测试的单元将使用它们
- 一体化试验,应该作组的生产功能单位和模拟的其余:所以写的集成试验将测试控制器、服务和存储库集成无实际生产数据库使用
- 系统测试运行测试在所有层没有任何嘲弄,这意味着我必须要使用生产(试验)数据库以及
的问题
我可以很容易地看到如何编写单元测试和系统测试,但我不知道如何写一体化测试?也许我看来这完全是歪曲,我不明白他们在所有。
应该怎样一个编写一体化和系统测试Asp.net 软应用程序?
或任。净的应用对于这个问题?
一些代码,可以帮助解释问题
假设我有课程,如:
TaskController
呼入TaskService
TaskService
呼入TaskRepository
TaskRepository
操纵EF数据的内部
这是我的(简写)类:
public class TaskController
{
private ITaskService service;
// injection constructor
public TaskController(ITaskService service)
{
this.service = service;
}
// default constructor
public TaskController() : this(new TaskService()) {}
public ActionResult GetTasks()
{
return View(this.service.GetTasks());
}
...
}
public class TaskService : ITaskService
{
private ITaskRepository repository;
// injection constructor
public TaskService(ITaskRepository repository)
{
this.repository = repository;
}
// default constructor
public TaskService() : this(new TaskRepository()) {}
public IList<Task> GetTasks()
{
return this.repository.GetTasks();
}
...
}
public class TaskRepository : ITaskRepository
{
public IList<Task> GetTasks()
{
// code that gets tasks from EF and converts to Task POCOs
}
...
}
单元试验是简单的,就是这样的:
public void UnitTest()
{
var mock = new Mock<ITaskService>();
// other code that mocks the service
TaskController controller = new TaskController(mock.Object);
// do the test
}
但是,当涉及到一个融入试验,我怎么嘲笑只有某些部分的整合。
public void IntegrationTest()
{
// no mocking at all
TaskController = new TaskController();
// do some testing
}
首先我不能就模拟数据库在这里?我可以模拟仓库,并有真正的服务和控制,但...
解决方案
一体化测试,该测试之间的整合组成。而单元的测试,测试的各个部分的单个成分,一体化测试之间的相互作用的组件,而是意味着工作生活。这样一个集成试验将利用一个数据库和任何其他外部的依赖关系,其最好嘲笑这些服务单元的测试。
系统测试的我会的功能测试(另一个水平测试中使用的东西喜欢适应),或用户界面测试通过之类的工具testcomplete或阶段的质量保证的工具。
禾田.
其他提示
我只是回答一个有关的问题: 集成试验执行情况.我认为它解决该问题在这里,通过提出一个明确的方法。
一部分问题是高级别的集成试验得太复杂的诉迅速。其问题的性质,所以我更喜欢以确保所有独立的部分工作旨在通过单元的测试和集中整合的试验根据的类参与。
与上述的地方,你只需要确定单独的碎片都挂钩是否正确,所以我用的全系统试验。这有最好的效果,如果代码下的固体和干燥。
不隶属于 StackOverflow