C# 当只有一个参数与测试有关时,如何测试功能参数?
我写了以下测试:C# 当只有一个参数与测试有关时,如何测试功能参数?,c#,unit-testing,nunit,C#,Unit Testing,Nunit,我写了以下测试: [TestCase(null, 0, 0, null, null, ExpectedException = typeof(ArgumentNullException), TestName = "VerifyThat_WhenBeginWriteHasANullBuffer_AnArgumentNullExceptionIsThrown")] [TestCase(new byte[] {1,2,3}, -1, 0, null, null, ExpectedException =
[TestCase(null, 0, 0, null, null, ExpectedException = typeof(ArgumentNullException), TestName = "VerifyThat_WhenBeginWriteHasANullBuffer_AnArgumentNullExceptionIsThrown")]
[TestCase(new byte[] {1,2,3}, -1, 0, null, null, ExpectedException = typeof(ArgumentOutOfRangeException), TestName = "VerifyThat_WhenBeginWriteHasANegativeSizeParameter_AnArgumentOutOfRangeExceptionIsThrown")]
[TestCase(new byte[] { 1, 2, 3 }, 4, 0, null, null, ExpectedException = typeof(ArgumentOutOfRangeException), TestName = "VerifyThat_WhenBeginWriteHasASizeParameterThatIsBiggerThanTheBufferSizeAndTheOffsetIsZero_AnArgumentOutOfRangeExceptionIsThrown")]
[TestCase(new byte[] { 1, 2, 3 }, 5, 1, null, null, ExpectedException = typeof(ArgumentOutOfRangeException), TestName = "VerifyThat_WhenBeginWriteHasASizeParameterThatIsBiggerThanTheBufferSizeMinusTheOffset_AnArgumentOutOfRangeExceptionIsThrown")]
[TestCase(new byte[] { 1, 2, 3 }, 2, -1, null, null, ExpectedException = typeof(ArgumentOutOfRangeException), TestName = "VerifyThat_WhenBeginWriteHasANegativeOffsetParameter_AnArgumentOutOfRangeExceptionIsThrown")]
[TestCase(new byte[] { 1, 2, 3 }, 2, 5, null, null, ExpectedException = typeof(ArgumentOutOfRangeException), TestName = "VerifyThat_WhenBeginWriteHasAnOffsetParameterThatIsBiggerThanTheBufferSize_AnArgumentOutOfRangeExceptionIsThrown")]
public void VerifyThat_WhenBeginWritesGivenWrongParameters_AnExceptionIsThrown(byte[] buffer, int offset, int size, AsyncCallback callback, object state)
{
connectedStream.BeginWrite(buffer, offset, size, callback, state);
}
我当前正在使用无效参数和随机有效参数调用BeginWrite函数。我在这里做的对吗?是否有更好的方法提供有效参数 编辑:
在这种情况下,测试参数的有效性取决于有效参数。
例如,当偏移量为负值或大于缓冲区大小减去偏移量时,偏移量无效。对于偏移量大于缓冲区大小减去偏移量或负值的情况,测试通过这一事实并不能证明该方法总是抛出ArgumentOutOfRangeException。我总是会错过一些东西。
检查多个输入总比只检查一次好。
有没有一种方法可以自动完成 编辑2:
这可能是我的解决方案吗 编辑3:
没有silverlight端口。如果要测试对无效参数的反应,应使所有其他参数都有效,以避免在不同参数导致失败时出现误报 至于如何提供这些有效的参数,就像你在其他情况下所做的那样,你并不真正关心这个值是什么,只是使用一些有效的方法
您正在测试当您向该方法提供一个特定的无效参数时,该方法是否会抛出,而所有其他参数都是有效的。只要其他参数符合您对valid的定义,您就是在测试正确的东西,所以不要太担心如何获取值。如果您想测试对无效参数的反应,您应该使所有其他参数都有效,以避免在不同参数导致失败时出现误报 至于如何提供这些有效的参数,就像你在其他情况下所做的那样,你并不真正关心这个值是什么,只是使用一些有效的方法
您正在测试当您向该方法提供一个特定的无效参数时,该方法是否会抛出,而所有其他参数都是有效的。只要其他参数符合您对valid的定义,您就在测试正确的东西,所以不要太担心如何获取值。技术部分。 NUnit 2.5有一些新的属性来帮助自动生成测试用例:
- -使用参数范围内指定的所有数值生成多个测试用例
- -类似于
,您可以指定单个值的列表,而不是数字范围范围
- -指定一个函数以生成
李>值列表
- -指定用于生成测试用例列表的函数。每一个细节都可以定制
范围
,值
和值源
适用于单个参数。每个参数都可以使用自己的值属性
用于ValueSource
和TestCaseSource
的函数调用得很早,可能在TestFixtureSetUp
之前。有关用法,请参阅文档
示例。
- 字节数组
可以使用指定缓冲区大小的buffer
函数,这样您就可以尝试更大的数组而无需太多键入ValueSource
- 对于给定的
,缓冲区
的有效范围是从1到缓冲区大小的任意范围大小
- 对于给定的
和缓冲区
,大小
的有效范围是从零到大小减去大小(我把这个留给你;它是一个连续的范围)偏移量
- 其他任何东西都超出范围
测试原理部分。
- 当您知道多种测试方法(或标准)时,请始终采用所有方法,并在每种方法中尝试一组合理的测试用例李>
- 使用自动化的测试用例生成为您带来最大的好处
- 如果无法访问(被测软件的)源代码并了解我们的测试代码覆盖率,我们无法确定是否遗漏了某些内容。这就是为什么如果需要一定程度的保证,白盒测试是必要的
- -使用参数范围内指定的所有数值生成多个测试用例
- -类似于
,您可以指定单个值的列表,而不是数字范围范围
- -指定一个函数以生成
李>值列表
- -指定用于生成测试用例列表的函数。每一个细节都可以定制
- 技术部分。
NUnit 2.5有一些新的属性来帮助自动生成测试用例:
范围
,值
和值源
适用于单个参数。每个参数都可以使用自己的值属性
用于ValueSource
和TestCaseSource
的函数调用得很早,可能在TestFixtureSetUp
之前。有关用法,请参阅文档
示例。
- 字节数组
可以使用指定缓冲区大小的buffer
函数,这样您就可以尝试更大的数组而无需太多键入ValueSource
- 对于给定的
,缓冲区
的有效范围是从1到缓冲区大小的任意范围大小
- 对于给定的
和缓冲区
,大小
的有效范围是从零到大小减去大小(我把这个留给你;它是一个连续的范围)偏移量
- 其他任何东西都超出范围