首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个自动测试方法参数和抛出.net/VS的ArgumentNullException的工具?

一个自动测试方法参数和抛出.net/VS的ArgumentNullException的工具?
EN

Stack Overflow用户
提问于 2011-03-24 12:51:10
回答 2查看 624关注 0票数 1

当我编写代码时,我有一个奇怪的习惯,就是用只抛出如下异常的代码启动我的方法

代码语言:javascript
复制
public WhateverType MethodName(CrazyObjectType crazyObject, string para2){
    if(crazyObject == null){
        throw new ArgumentNullException("crazyObject");
    }
    if(param2 == null){
        throw new ArgumentNullException("param2");
    }
    if(para2.Lenght > 32){
        throw new ArgumentOutOfBoundsException("para2");
    }

    ...
}

考虑一些方法有6个参数,允许它们中的非参数为null,有些方法是字符串,它们可能不会是空的,也不会比某些值长。您可以想象,在我进入实际的方法逻辑之前,我编写了相当多的代码+我的类将很难阅读。

有没有任何工具/VS插件/Resharper插件/注释/代码片段让我不必编写所有这些重复的代码?

理想的解决方案是一些声明性注释,类似于:

代码语言:javascript
复制
[NotNull("crazyObject, param2")] [StringLenght("para2", 0, 32)]
public WhateverType MethodName(CrazyObjectType crazyObject, string para2){
    ...
}
  • 有些VS/Resharper插件允许折射这些参数,所以当我重命名/折射器时,参数注释将自动同步吗?

我的理想映像更进一步,我设想我可以使用GUI来实现过程的自动化,这样我就可以选择方法,单击某个地方,选中一些不应该为null的参数复选框,然后为我生成注释。

像这样的东西存在吗?

注意:我想我总是可以创建代码片段来生成代码,但是声明性方法和GUI生成器会更好。

编辑:说“考虑一些方法有6个参数”只是一个例子--我认为我没有太多这样的方法。相反,我应该写“考虑到您有很多--许多抛出3-4 ArgumentExceptions的方法”。

EDIT2:不好的术语。我意识到,在这个问题中,我所称的“注释”--如果我正确地从我的.NET类中记住了它--我的评论应该在.NET中被称为"attributes“。

EN

回答 2

Stack Overflow用户

发布于 2011-03-24 12:54:48

虽然它不是严格的声明性的,但我认为您可能应该看看代码契约

要想找到一种让零论点测试变得更便宜的奇怪且不太推荐的方法,请看一看这篇博客文章。不过,这只包含空参数检查--而不是其他类型的有效性。

顺便说一句,只执行参数验证的方法的第一部分没有什么奇怪的。这完全合理。

票数 6
EN

Stack Overflow用户

发布于 2011-03-24 13:04:10

我同意Jon关于使用代码契约的意见。您可能会发现其他一些有趣的东西是Fluent验证

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

https://stackoverflow.com/questions/5419408

复制
相关文章

相似问题

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