C#单元测试覆盖方法

Tamaska Janos

我是单元测试的新手,我想知道是否存在针对以下问题的内置解决方案。

我想测试一种方法,该方法可以一次测量来自硬件的某些输入。

var results = Measurement.MeasureAll();

我当然要在没有硬件的情况下进行测试。有没有一种方法可以覆盖Measurement.MeasureAll();单元测试的范围 方法来返回一些预定义的值?

大卫

您将嘲笑依赖项。这是您的依赖项:

Measurement

什么Measurement它从何而来?为了使代码可以进行单元测试,Measurement应提供该代码。像这样:

public void MethodBeingTested(Measurement measurement)
{
    // use Measurement here
}

也许这样:

public class SomeClass
{
    private Measurement TheMeasurement { get; set; }

    public SomeClass(Measurement theMeasurement)
    {
        TheMeasurement = theMeasurement;
    }

    public void MethodBeingTested()
    {
        // use TheMeasurement here
    }
}

然后,您的单元测试可以创建一个假/模拟/存根/等。Measurement并将其提供给测试。(有大量的模拟库可以帮助解决这个问题。我个人喜欢Moq和RhinoMocks。)该“模拟”版本将由测试定义,以特定且可预测的方式执行。然后,它将观察到被测试的代码与模拟完全按照预期的方式进行了交互。


现在,众所周知,有些对象很难模拟。尤其是如果你正在展示我们的是static(静态成员使单元测试非常困难的。)这是你会在一个mockable包装纸包裹它这样的对象可以被模拟。像这样简单的事情:

public interface IMeasurement
{
    SomeType MeasureAll();
}

public class MyMeasurement
{
    // declare Measurement here?  some other context?

    public SomeType MeasureAll()
    {
        return Measurement.MeasureAll();
    }
}

这里的想法是,您的业务逻辑将耦合到IMeasurement,从而可以完全控制和模拟/可测试。然后,您可以提供包装器类的模拟版本(通过使用接口而变得微不足道),而不必担心模拟实际依赖项。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

覆盖单元测试 WebRequest c#

来自分类Dev

通用方法的c#单元测试

来自分类Dev

void 方法的单元测试 C#

来自分类Dev

单元测试C#,并测试私有方法

来自分类Dev

在C#中执行/调试单元测试“方法”?

来自分类Dev

用于存储过程方法的C#单元测试

来自分类Dev

将C#单元测试转换为方法

来自分类Dev

私有方法的单元测试 c#

来自分类Dev

单元测试C#[TestInitialize]

来自分类Dev

C#单元测试列表

来自分类Dev

Windows窗体的C#单元测试

来自分类Dev

随机失败的C#单元测试

来自分类Dev

连接的单元测试/ C#

来自分类Dev

c#单元测试错误

来自分类Dev

单元测试-模拟-可覆盖问题-扩展方法

来自分类Dev

单元测试专用方法-目标C

来自分类Dev

C#单元测试Visual Studio 2013测试失败

来自分类Dev

在C#中,使用ILogger对静态方法进行单元测试的静态方法ILoggerFactory为空

来自分类Dev

C#单元测试(Nunit)控制台应用程序的主要方法?

来自分类Dev

如何在C#单元测试中使用特定的NSpecification参数验证方法?

来自分类Dev

使用Mock对C#中的更新方法进行单元测试

来自分类Dev

C#单元测试(Nunit)控制台应用程序的主要方法?

来自分类Dev

C# 单元测试 - 检查是否达到了私有方法

来自分类Dev

单元测试代码覆盖率

来自分类Dev

单元测试覆盖率过高

来自分类Dev

单元测试覆盖率%0

来自分类Dev

什么是C#单元测试的生命周期

来自分类Dev

单元测试Parallel.Foreach C#

来自分类Dev

数据访问层c#的单元测试