首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >测试驱动接口设计

测试驱动接口设计
EN

Code Review用户
提问于 2013-01-20 17:00:41
回答 3查看 158关注 0票数 3

自从我从大学开始我的第一份工作(大约5个月前)以来,我就一直在做TDD,其中大部分工作是使用遗留代码。我今天开始了一个个人项目,我想我会去做这个项目。我没有太多的“绿色领域”开发经验,所以我不确定这是否是正确的方式驱动界面设计。我正在测试的界面有预期的方法,是服务合同等。我觉得这太过分了?

守则如下:

代码语言:javascript
复制
[TestFixture]
public class IPairSessionTests
{
    [TestCase]
    public void Then_IPairSession_is_a_service_contract()
    {
       var iPairSessionType = typeof(IPairSession);
       Assert.That(iPairSessionType.IsDefined(typeof(ServiceContractAttribute),true));

    }
    [TestCase]
    public void Then_IPairSession_has_Insert_Method()
    {
        var iPairSessionType = typeof(IPairSession);
        Assert.That(iPairSessionType.GetMethod("Insert"), Is.Not.Null);
    }

    [TestCase]
    public void Then_IPairsSession_Insert_is_operation_contract()
    {
        var iPairSessionType = typeof(IPairSession);
        var insertMethod = iPairSessionType.GetMethod("Insert");
        Assert.That(insertMethod.IsDefined(typeof(OperationContractAttribute), true));
    }
}
EN

回答 3

Code Review用户

发布于 2013-01-20 19:02:17

是的,太多了。对合同上存在的方法进行测试是过分的,也是高维护的.如果您决定更改一个方法名,它会中断测试,并且测试的破坏不会告诉您一些有用的东西。问问自己,你从这个测试中得到了什么价值。

我倾向于通过对使用接口的类进行TDD来测试接口。我不认为更多是有用的。

票数 1
EN

Code Review用户

发布于 2013-01-21 06:20:09

我认为在TDD中,接口本身并不是第一步(只是它不知怎么已经给出了)。您创建测试,并逐步创建一个具体的类。在进行此过程时,您可能会重构或优化API。提取接口类使您的实现可互换是最后一步。

首先考虑接口可能会不必要地限制您。

票数 1
EN

Code Review用户

发布于 2013-02-21 22:22:06

我对C#/.NET世界并不太熟悉,但我想有一些现有的工具可以帮您做到这一点。它们可能包含更高级的测试,比如检查返回类型,忽略兼容的更改(例如,将MySubType参数更改为MyType,其中MySubType扩展了MyType)。

以下堆栈溢出问题可能是一个好的开始:验证公共接口的兼容性的工具。

如果接口和接口的客户端仅在同一个应用程序中使用(因此,您可以同时修改这两种方法,编译器也可以对其进行检查),那么这类测试似乎是不必要的。

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/20739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档