NUnit TestCaseSource 将值传递给工厂

2024-01-03

我正在使用 NUnit 2.5.3 TestCaseSource 属性并创建一个工厂来生成我的测试。像这样的东西:

[Test, TestCaseSource(typeof(TestCaseFactories), "VariableString")]
public void Does_Pass_Standard_Description_Tests(string text)
{
    Item obj = new Item();
    obj.Description = text;
}

我的来源是这样的:

public static IEnumerable<TestCaseData> VariableString
{
    get
    {
        yield return new TestCaseData(string.Empty).Throws(typeof(PreconditionException))
            .SetName("Does_Reject_Empty_Text");
        yield return new TestCaseData(null).Throws(typeof(PreconditionException))
            .SetName("Does_Reject_Null_Text");
        yield return new TestCaseData("  ").Throws(typeof(PreconditionException))
            .SetName("Does_Reject_Whitespace_Text");
    }
}

我需要做的是向变量字符串添加最大长度检查,但这个最大长度是在被测类的合同中定义的。在我们的例子中,它是一个简单的公共结构:

   public struct ItemLengths
    {
        public const int Description = 255;
    }

我找不到任何将值传递给测试用例生成器的方法。我尝试过静态共享值,但这些值没有被拾取。我不想将内容保存到文件中,因为每次代码更改时我都需要重新生成该文件。

我想将以下行添加到我的测试用例中:

yield return new TestCaseData(new string('A', MAX_LENGTH_HERE + 1))
    .Throws(typeof(PreconditionException));

概念上相当简单,但我发现不可能做到。有什么建议么?


将测试的参数更改为类而不是字符串。就像这样:

公共类字符串测试{ 公共字符串测试字符串; 公共 int 最大长度; }

然后构造此类作为参数传递给 TestCaseData 构造函数。这样您就可以传递字符串和您喜欢的任何其他参数。

另一种选择是让测试有两个参数:字符串和整数。

然后是 TestCaseData("mystring", 255)。您是否意识到他们可以有多个论点?

Wayne

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NUnit TestCaseSource 将值传递给工厂 的相关文章

  • NUnit 测试项目无法加载 System.Windows.Forms 的程序集

    我有一个专门用于单元测试的 NUnit 测试项目 其目标框架为 Net Core 2 1 该测试项目引用了另外两个项目 其中一个是窗口窗体基于应用程序 另一个是类库基于数据库交互的应用程序 这两个项目的目标框架都是 Net Framewor
  • NUnit Assert.AreEqual 日期时间容差

    我想知道是否有人找到了一个好的解决方案 在我们的单元测试中 我们常用Assert AreEqual 验证我们的结果 一切都很好 直到我们开始尝试在 DateTime 属性上使用它 尽管时间非常相似 但有时会相差几毫秒 从而导致测试失败 在我
  • 使用 Hudson 发布 NUnit 测试结果报告时出现问题

    我在 Hudson 和 NUnit 测试方面遇到问题 当尝试发布 NUnit 的测试结果报告时 Hudson 中的选项 即 发布 NUnit 测试结果报告 会产生问题 我无法提供作业工作区文件夹下已创建的 XML 文件的路径 当我设置文件的
  • 如何将 NUnit 的 EqualTo().Within() 约束与自定义数据类型一起使用?

    我喜欢 NUnit 基于约束的 API 我经常使用这样的浮点比较 double d foo SomeComputedProperty Assert That d Is EqualTo 42 0 Within 0 001 非常可读 但是 如果
  • NUnit Gui Runner 去哪儿了?版本3.0.1

    我刚刚从 nunit 2 6 4 升级到版本 3 0 1 它曾经有一个 NUnit Gui Runner 位于此处 安装3 0 1后 我下载的是windows版本从这里 http www nunit org index php p down
  • 如何在.net中调试测试

    我想调试我的测试 检查每个测试 看看到底哪里失败了 我正在使用 coderush 这是一个很棒的工具 但我的 1 个月试用期已过期 欢迎任何建议 正如马克所说 如果你发现一个工具确实有用 就购买它 我个人使用 ReSharper 来运行我的
  • 单元测试、NUnit 还是 Visual Studio? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在使用 Visual studio 有时是 resharper 来运行我的单元测试 我听说过 NUnit 但我对它了解不多 我应该关心它吗
  • Assert.That 与 Assert.True

    更喜欢什么 Assert That obj Foo Is EqualTo true or Assert True obj Foo 对我来说 这两种资产是等价的 应该优先选择哪一种 在这种特殊情况下 没有区别 您将看到大致相同详细程度的输出
  • 如何对公共接口背后高度复杂的代码进行单元测试

    我想知道应该如何通过 NUnit 测试此类功能 Public void HighlyComplexCalculationOnAListOfHairyObjects calls 19 private methods totalling 100
  • 测试依赖于 NUnit 的常用功能

    我有一些初始化代码来使用我的 API 初始化可能会失败 我想在 NUnit 测试中测试它 初始化之后就可以使用API 了 我也在测试 API 但我所有的测试方法都将使用相同的 通用的初始化代码 我理想的情况是这种行为 运行初始化测试 如果
  • Vstest.console.exe 找不到 nunit 测试

    我有 VS 2017 和 net 4 6 尝试使用 vstest console 通过 cmd 提示符运行时 vstest console exe bin Release Tests dll UseVsixExtensions true 我
  • 在 .NET Core 中运行 NUnit 测试

    我正在尝试使用 NET Core 为我的 C 项目运行单元测试 我正在使用一个Docker https en wikipedia org wiki Docker 28software 29运行时的容器 Dockerfile FROM mic
  • 运行单元测试时如何禁用 PostSharp?

    我希望我的 nunit 测试不应用任何 PostSharp 方面 这样我就可以单独测试我的方法 这可以在测试夹具设置中以某种方式完成 还是只能在每个项目级别上完成 您可以在测试版本上设置 SkipPostSharp 标志 这样它就不会首先编
  • 测试自定义 AuthorizationAttribute 时抛出 NullReferenceException

    我看了一下 如何进行单元测试来测试检查请求标头的方法 https stackoverflow com questions 9263457 how do i make a unit test to test a method that che
  • 使用 mono/nunit-console/4 在 Mac OS X 控制台上运行测试

    我安装了 Max OS X 10 11 1 上面装有 Xamarin 我编写了简单的测试类 只是为了测试在 Mac OS X 和 Ubuntu 上运行 Nunit 测试 该类实际上有一个返回字符串的方法 using System names
  • 在循环中使用 NUnit Assert 时,如何在错误消息中显示更多信息?

    考虑以下代码 Test public void WidgetTest foreach Widget widget in widgets Assert AreEqual 0 widget SomeValue 如果其中一个断言失败 我将收到一条
  • 如何在 Visual Studio 2017 中运行 NUnit 测试?

    I ve just installed Visual Studio 2017 I have a project using NUnit for the test cases Ctrl R T no longer runs the tests
  • 运行 NUnit 并指定类别时,是否也可以包含所有未分类的测试?

    我们有数百个测试类 其中几十个测试类标记有以下属性 测试治具 明确 类别 集成测试 因此它们只会在我们通宵自动构建中运行 其余的 TestFixtures 没有指定类别 也没有标记为显式 这是我们运行来执行测试的 NAnt 任务
  • 需要帮助理解这段代码

    我正在尝试学习单元测试 我正在尝试对我在 asp net mvc 1 0 中制作的一些会员资格内容进行单元测试 我一直在关注一本关于 MVC 的书 我对一些东西感到困惑 希望有人能为我解答 我的框架使用 Nunit 和 Moq 问题一 pu
  • 您可以像将数据传递给测试用例一样将数据传递给测试装置吗?

    您可以像将数据传递给测试用例一样将数据传递给 NUnit3 测试装置吗 这样做有意义吗 根据参数运行套件 夹具类 绝对地 如果你需要传入的参数数量有限 你可以将它们放在普通的参数中 TestFixture 属性 它们将被传递给 TestFi

随机推荐

  • 如何在conda中管理两个pip版本?

    我正在 Windows 中使用 conda 我不小心安装了两个版本的 pip 使用python m pip install upgrade pip 现在当我跑步时conda list来自基础环境 While pip version给出点 1
  • 实体框架 - 使用 order by 和 group by 的 Linq 查询

    I have Measurement具有相关属性的对象CreationTime 日期时间 和Reference 字符串 和一些其他值 我想编写一个高效的 linq 查询DbContext that 分组我的Measurement给定的对象R
  • 在 eclipse 2.0 的 aws 工具包中承担/切换角色

    我正在使用适用于 eclipse 2 0 的 aws 工具包 使用选项 窗口 gt 首选项 gt aws 工具包 我已经配置了 IAM 登录用户 api 访问密钥 id 和秘密访问密钥 根据我们的 aws 配置 此 IAM 用户必须承担角色
  • 如何在 PHP 中查找图像是否存在或渲染正常?

    我遇到这种情况 我有一些图片 http www example com test1 jpg http www example com test2 jpg http www example com test3 jpg 其中一些可能是死链接 图
  • Spark:将 RDD 结果写入文件系统很慢

    我正在使用 Scala 开发 Spark 应用程序 我的应用程序仅包含一项需要改组的操作 即cogroup 它在合理的时间完美运行 我面临的问题是当我想将结果写回文件系统时 由于某种原因 它比运行实际程序花费的时间更长 起初 我尝试在不重新
  • 检查正在运行的程序中是否存在内存泄漏

    出于好奇 我有一个关于检查内存泄漏的问题 作为一个用过的人valgrind在过去的一两年里 我经常检查代码中的内存泄漏 我突然想到它只检测丢失 未释放的内存来世之后的程序 因此 鉴于此 我在想如果你有一个长期运行的程序malloc 是间歇性
  • C 中允许重复的 const 限定符,但 C++ 中不允许?

    示例代码片段 const const const int x 10 int main 在 C 中编译 但在 C 中不编译 为什么用C编译 我认为这在 C 中也会失败 没关系 C 标准的哪一部分禁止使用重复项constC 标准的哪一部分允许这
  • 如何对 fgets 使用 feof 和ferror(C 中的 minishell)[重复]

    这个问题在这里已经有答案了 我已经编写了这个 minishell 但我不确定我是否对错误进行了正确的控制 我知道 fgets 可以返回 feof 和ferror http www manpagez com man 3 fgets http
  • spring事务超时可配置

    我有一个具有固定超时的事务方法 有没有一种方法可以通过即配置来配置事务超时application yml Transactional propagation Propagation REQUIRED timeout TIMEOUT publ
  • 如何使用 Snowflake SQL 解析 ISO 8601 时间戳?

    我正在寻找一个允许我解析 ISO8601 时间戳的通用函数 我知道关于to timestamp tz https docs snowflake net manuals sql reference functions to timestamp
  • 将两个整数合并为一个并稍后解码

    使用 C 我需要将两个不同的 ID 组合成一个 16 位整数 然后我需要将这个 16 位整数解码为两个原始 ID 值 Example Store two integers into one unsigned short Identifier
  • 测试:如何测试视图包含所需的数据

    假设厨师可以制作食谱 副厨师可以创建必须经过主厨批准的食谱 您想要测试一下 当主厨查看她的主页时 她会看到她自己创建的食谱 您还想测试她是否看到有食谱等待她的批准 我可以想到两种方法来做到这一点 测试视图是否包含某些单词 例如 您的食谱 和
  • 当我使用与 SeismicXML 示例相同的 NSXMLParser 时出现内存泄漏问题

    我已经完成了与 SeismicXML 示例相同的 xml 解析 但现在它给了我内存泄漏问题 当我用仪器测试 SeismicXML 时 它也给出了相同的内存泄漏 在SeismicXML中 有EarthQuake示例 它包含来自xml解析的所有
  • String.find 始终返回 true (C++)

    我试图让布尔型found word 在找到单词 字符时返回 true 如果没有找到则返回 false 但无论我在文本中写什么 它总是返回 true 循环本身有效 已经尝试过了 包括 IOStream 和字符串 while timestoru
  • 河内塔 - 用 Python 解决中途算法

    河内塔有可能中途解决吗 我已经做了广泛的研究来寻找可以半途解决用户配置的代码 但我还没有找到 这是一项作业 我需要代码从用户停止解决的地方接管并继续为用户解决它 而不将谜题重置为一 我知道有现成的递归算法 但这不是我正在寻找的 我正在寻找可
  • [if ( ! Defined( 'ABSPATH' ) )] 是什么意思

    我目前正在从头开始构建一个 WordPress 主题 作为 在工作中学习 的一种手段 尽管我过去非常依赖 PageBuilders 但我对后端工作有一定的经验 我现在希望创建一个没有任何页面构建器的主题 作为提高其加载速度等的方法 目前 我
  • C# 中重载函数调用运算符

    是否可以重载 C 中的默认函数运算符 运算符 如果是这样 怎么办 如果没有 是否有解决方法可以产生类似的效果 EDIT 我试图给一个类一个默认运算符 大致如下 class A A int myvalue save value public
  • 使用警报管理器与 ScheduledExecutorService 调度相同的任务有什么区别

    您好 我在互联网上读到 我们可以使用警报管理器安排我们想要以一定间隔运行的任何事情 并且ScheduledExecutorService 我想知道它们之间有什么区别以及什么时候使用 提前致谢 ScheduledExecutorService
  • git-mv 的目的是什么?

    据我了解 Git 并不真正需要跟踪file重命名 移动 复制操作 那么真正的目的是什么 的git mv https git scm com docs git mv 手册页没有特别描述性 它已经过时了吗 它是一个内部命令 不适合普通用户使用吗
  • NUnit TestCaseSource 将值传递给工厂

    我正在使用 NUnit 2 5 3 TestCaseSource 属性并创建一个工厂来生成我的测试 像这样的东西 Test TestCaseSource typeof TestCaseFactories VariableString pub