微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 用Rhino Mocks干燥

我正在寻找使以下更简洁的方法.
public class MyTests
{
    IPresenter presenter;

    [SetUp]
    public void SetUp()
    {
        presenter = MockRepository.GenerateStub<IPresenter>();
    }

    ...
}

特别是在创建模拟时再次指定类型似乎是多余的.例如,我可以这样写它并使用反射来获取类型并自动创建存根:

public class MyTests
{
    IPresenter presenter;

    [SetUp]
    public void SetUp()
    {
        Stub(x => x.presenter);
    }

    void Stub(Expression<Func<MyTests,object>> expression)
    {
        ...
    }
}

这可以工作,但编译器无法再检测到分配了演示者并开始发出警告.这也让ReSharper非常不满意.

有谁能建议更好的方法

解决方法

这可能是有争议的,但我赞成可读性,而不是单元测试中的DRY-ness *.

换句话说,在我的单元测试中,设置方法是不存在的.它们仅用于集成测试.我相信XUnit.NET也采取这种立场.

因此,为了回答您的问题,我真的不担心在每个需要测试的测试中设置模拟演示者.某些测试可能不需要模拟演示者,因此在测试运行之前设置一个是没有必要的.

**当然,我的单位测试跨度说平均十行,如果这个增加或设置测试的范围(遵循AAA – 安排,行动断言)很大,那么我将删除重复并创建帮助方法.为了清楚这一点,为了更清晰的测试,您可以创建一个包含辅助方法和其他设置代码的基本测试类.*

原文地址:https://www.jb51.cc/csharp/91606.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐