【问题标题】:NUnit: How to write one generic test method for three functions?NUnit:如何为三个功能编写一种通用测试方法?
【发布时间】:2023-03-17 23:50:01
【问题描述】:

我正在使用 NUnit。这是我的要求:

假设有 3 个函数,即 add()sub()mul()。如何在 Nunit 中只编写一种通用测试方法?

因此,根据函数类型,通用测试方法会执行测试。

意味着如果我将add() 传递给通用测试方法,它应该执行add() 的测试等等。我不想为 3 种方法编写 3 种单独的测试方法。

我只想使用一种通用测试方法来完成此任务。这可能吗?

【问题讨论】:

  • 我能问你为什么不想写3个单独的方法吗?因为如果您尝试将所有 3 个案例都塞进一个测试方法中,您最终可能会得到更多难以阅读的代码。这也提醒我,通用测试只是一个坏主意。我的意思是它在测试什么?那函数调用成功了?单元测试应该测试一些有价值的东西。
  • 测试应该易于编写。我宁愿有 3 种易于阅读的方法,然后找出为测试编写的聪明代码。我什至不推荐在测试中继承等。测试应该简单直观。
  • @meganaut 感谢您的澄清。

标签: c# unit-testing nunit


【解决方案1】:

看来你不明白什么是单元测试。

单元测试的目的是帮助您快速确定失败的根本原因,以便尽快修复它。

首先要针对您打算测试的每个“不同行为”进行一个测试。换句话说:您肯定会为 3 种测试方法中的每一种选择 一种 测试方法。

您甚至可以为这 3 种方法选择 多种 测试方法;因为例如“添加到空”可能与“添加到非空”不同。

您可能希望在一个测试用例中真正使用所有三种方法的“集成”级别测试;只是为了确保整体“管道”最终得到解决。但从单元测试级别来看,您要确保这三种方法在 per method 级别上按预期工作。您知道,当您真正验证 add() 在所有可能的情况下都有效时;没有更多特殊需要结合其他方法来测试它!

【讨论】:

  • 您在上面提到过,我可以为我的 3 种方法中的每一种选择一种测试方法。怎么做?请给我指路好吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多