Unit testing 单元测试是一种具有多种可能结果的方法
我构建了一个简单的~ish方法,它由大约5个部分组成URL:基址、端口、路径、“操作”和一组参数。其中,只有地址部分是强制性的,其他部分都是可选的。对于输入参数的每个排列,必须从方法中产生有效的URL,例如:Unit testing 单元测试是一种具有多种可能结果的方法,unit-testing,Unit Testing,我构建了一个简单的~ish方法,它由大约5个部分组成URL:基址、端口、路径、“操作”和一组参数。其中,只有地址部分是强制性的,其他部分都是可选的。对于输入参数的每个排列,必须从方法中产生有效的URL,例如: 地址 地址端口 地址端口路径 地址路径 地址操作 地址路径操作 地址端口操作 地址端口路径操作 地址操作参数 地址路径操作参数 地址端口操作参数 地址端口路径操作参数 索福斯。基本方法是为每个可能的结果编写一个单元测试,每个单元测试将地址和任何可选参数传递给方法,并根据预期输出测试结果
- 地址
- 地址端口
- 地址端口路径
- 地址路径
- 地址操作
- 地址路径操作
- 地址端口操作
- 地址端口路径操作
- 地址操作参数
- 地址路径操作参数
- 地址端口操作参数
- 地址端口路径操作参数
(注意)圣诞节周末即将来临,可能要到下周才会回复建议。(/note)由于您通常只期望一个唯一的结果,无论参数的顺序如何,我建议对所有可能性进行一次测试。在我的代码示例中,我使用NUnit测试框架,因此您可以了解如何使用您的测试框架进行等效测试
[TestCase("http://www.url.com")]
[TestCase("http://www.url.com", 21)]
[TestCase("http://www.url.com", 24, @"c:\path")]
public void TestingMethod(string address, params object[] address) {
// Do your tests accordingly here...
}
因此,TestCaseAttribute
(使用NUnit)是该作业的正确工具
当然,您需要确定参数数组的索引处的参数值。我将它设置为一个对象[]
,因为我假设不同的参数也有不同的数据类型,而且我们无法从一开始就确定正确的顺序,那么您必须自己找到它,尽管使用多态性。我使用的是JUnit,它(通过谷歌搜索)证明具有参数化的测试单元。。。不过,它的语法没有NUnit的漂亮,请参见。