gpt4 book ai didi

nunit - 在 NUnit 中延迟加载 TestCaseSource

转载 作者:行者123 更新时间:2023-12-03 17:59:00 27 4
gpt4 key购买 nike

我有一些使用 TestCaseSource 函数的 NUnit 测试。不幸的是,我需要的 TestCaseSource 函数需要很长时间来初始化,因为它递归地扫描文件夹树以查找将传递给测试函数的所有测试图像。 (或者,它可以在每次运行时从文件列表 XML 加载,但仍然需要自动发现新的图像文件。)

是否可以将 NUnit 属性与 TestCaseSource 一起指定,以便 NUnit 不枚举测试用例(不调用 TestCaseSource 函数),直到用户单击节点或运行测试套件?

需要将所有测试图像存储在一个文件夹中是一个项目要求,因为其他无权访问测试项目的人需要将新的测试图像添加到该文件夹​​中,而无需修改测试项目的源代码。然后他们将能够查看测试结果。

一些教条式的单元测试人员可能会反驳说我正在使用 NUnit 来做一些它不应该做的事情。我不得不承认我必须满足一个要求,而 NUnit 是一个非常棒的工具,它有一个很好的 GUI 可以满足我的大部分要求,所以我不关心它是否是适当的单元测试。

附加信息 (来自 NUnit 文档)

Note on Object Construction

NUnit locates the test cases at the time the tests are loaded, creates instances of each class with non-static sources and builds a list of tests to be executed. Each source object is only created once at this time and is destroyed after all tests are loaded.

If the data source is in the test fixture itself, the object is created using the appropriate constructor for the fixture parameters provided on the TestFixtureAttribute or the default constructor if no parameters were specified. Since this object is destroyed before the tests are run, no communication is possible between these two phases - or between different runs - except through the parameters themselves.



似乎预先加载测试用例的目的是避免在 TestCaseSource 和测试执行之间进行通信(或副作用)。这是真的?这是要求预先加载测试用例的唯一原因吗?

注:

需要修改 NUnit,如 http://blog.sponholtz.com/2012/02/late-binded-parameterized-tests-in.html 中所述

有计划将此选项引入 NUnit 的更高版本。

最佳答案

我不知道在 GUI 中延迟加载测试名称的方法。我的建议是将这些测试移至单独的程序集。这样,您可以快速运行所有其他测试,并仅在需要时加载速度较慢的详尽测试。

关于nunit - 在 NUnit 中延迟加载 TestCaseSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5828125/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com