当前位置: 首页 > 知识库问答 >
问题:

在一个N层架构上,有必要为每一个单层编写单元测试代码吗?

黄弘盛
2023-03-14
public class DLEmployee
{

    private string _strErrorMessage = string.Empty;
    private bool _blnResult = true;

    public string strErrorMessage
    {
        get
        {
            return _strErrorMessage;
        }
    }
    public bool blnResult
    {
        get
        {
            return _blnResult;
        }
    }

    public Employee GetEmployee(int pintId)
    {
        Employee employee = null;
        _blnResult = true;
        _strErrorMessage = string.Empty;

        try
        {
            using (var context = new AdventureWorks2012Entities())
            {
                employee = context.Employees.Where(e => e.BusinessEntityID == pintId).FirstOrDefault();
            }
        }
        catch (Exception ex)
        {
            _strErrorMessage = ex.Message;
            _blnResult = false;

        }

        return employee;
    }

共有1个答案

狄宾实
2023-03-14

以下是我基于领域驱动设计原则的2美分:

  • 您的业务层不应该依赖于具体的数据层,它应该只定义数据层可以实现的一些抽象接口(存储库)。
  • 您绝对应该使用不接触文件系统的假数据层对业务层进行单元测试。
  • 您可能会创建集成测试,包括您的服务和业务层以及一个假的数据层。嘲笑业务层并检查服务层对业务层调用了什么(行为测试)是没有意义的,而是检查它对通过业务层可观察到的业务对象进行了什么状态更改。
  • 您应该使用真实的数据层、服务和业务层创建一些端到端测试,并在服务层上使用一些用例。

如果您刚刚开始进行单元测试,我建议您阅读Kent Beck的《通过示例进行测试驱动开发》和Gerard Meszaros的xUnit测试模式

 类似资料:
  • 为了让单元测试跑一个批处理的任务,这个框架必须加载这个任务的ApplicationContext,两个注解的触发方式: @RunWith(SpringJUnit4ClassRunner.class):表明这个类需要使用Spring的测试工具 @ContextConfiguration(locations = {…}):表明哪些xml文件包含ApplicationContext @RunWith

  • 我有一个接口,它的实现包括单链表、Doubly、Circular等。我为Singly编写的单元测试应该对该接口的大部分Doubly以及Circular和任何其他新实现都有好处。因此,JUnit是否提供了一些内置的东西,让我有一个JUnit测试,并针对不同的实现运行它,而不是对每个实现重复单元测试? 使用JUnit参数化测试,我可以提供不同的实现,如Singly、doubly、circular等,但

  • 我不会告诉你有关后台任务的单元测试的任何内容,因为Hangfire没有添加任何特定方法 (除了 IJobCancellationToken 接口参数)去改变任务。使用您最喜爱的工具,并照常写入单元测试。本节介绍如何测试创建的后台任务。 所有的代码示例都使用静态 BackgroundJob 类来告诉你如何做这个或那些东西,只是出于简单演示的目的。但是当你想测试调用的静态方法时,会变得很痛苦。 不用担

  • 问题内容: 我有一个接口,其实现包括单链接列表,双精度,循环等。我为单精度编写的单元测试应该对大多数双精度以及环形以及接口的任何其他新实现都有利。因此,JUnit不会为每个实现重复执行单元测试,而是提供一些内置的功能,让我拥有一个JUnit测试并针对不同的实现运行它吗? 使用JUnit参数化测试,我可以提供不同的实现,例如单,双,循环等,但是对于每个实现,都使用相同的对象执行类中的所有测试。 问题

  • 我已经开始考虑在我的项目中围绕一些业务逻辑添加一些单元测试。 我想测试的第一个方法是服务层中的一个方法,它返回给定节点的子节点列表。 该方法如下所示: 我想象这样的测试方法是提供一个假树结构,然后测试提供节点是否返回正确的子节点。 ssdsContext是一个对象上下文。 我已经看到可以为提取和接口如何模拟ObjectContext或ObjectQuery 我还读到,as Entity Frame

  • 我不熟悉Scala中的单元测试,我找不到一种方法来存根单例对象中定义的函数。 例如: 我试图对Profile类中定义的函数进行单元测试。因为我不想在单元测试中通过web实际访问外部API,所以我尝试存根对象及其函数以返回一些预定义的值。 我研究了ScalaMock、EasyMock和Mockito框架,但找不到一种方法来存根单例对象的方法。ScalaMock状态 为什么所有的模拟框架都不提供这种功