我的申请

我有一个应用程序设计,看起来是这样的:

  • 网络应用程序层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或阶段的质量保证的工具。

禾田.

其他提示

一体化的测试不涉及UI仍然可以写在呢,来完成,等等。

对于ASP.NET 视特别是(或者任何网应用程序)中,可以使用 WatiN 写系统/综合测试中使用的用户界面。

你也许想看看 T.S.T. T-SQL单元的测试, SpecFlow 如果你是好奇BDD。网。

注:我写了这个前的问题是更新代码和一个介绍的具体情况。它并没有真正解决问题了,但希望仍将有趣的/有用的人。

我只是回答一个有关的问题: 集成试验执行情况.我认为它解决该问题在这里,通过提出一个明确的方法。

一部分问题是高级别的集成试验得太复杂的诉迅速。其问题的性质,所以我更喜欢以确保所有独立的部分工作旨在通过单元的测试和集中整合的试验根据的类参与。

与上述的地方,你只需要确定单独的碎片都挂钩是否正确,所以我用的全系统试验。这有最好的效果,如果代码下的固体和干燥。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top