gpt4 book ai didi

c# - 为什么 [SetUpFixture] 中的 [OneTimeSetUp] 在 (Test,TestCaseSource()) 之后调用

转载 作者:行者123 更新时间:2023-12-04 03:08:54 28 4
gpt4 key购买 nike

我在 Nunit 3 测试用例中陷入了奇怪的情况,我在 [SetUpFixture] 中的 [OneTimeSetUp] 在 [Test, TestCaseSource(typeof(TestDataProvider), "GetSQLTestCases")] 之后被调用.

当我删除那个 TestCaseSource来自测试的属性,然后按以下顺序按预期工作。

OneTimeSetup --> 测试

请建议我如何解决上述问题。

-尼拉吉

最佳答案

这是预期的。在调用任何测试(或任何 SetUp/OneTimeSetUp 方法)之前评估所有 TestCaseSource 目标。

顺序是:

(~ALL~ TestCaseSource in assembly) ->
(SetupFixture ctor) ->
(OneTimeSetUp) ->
(TestFixture ctor) ->
(SetUp) ->
(Test)

这是因为 TestCaseSource 的 RESULT 是用于执行测试的数据列表;因为这是将要运行的测试列表,所以它是在开始时生成的。 (旧的 NUnit 版本会创建类的实例来访问非静态 TestCaseSource 目标。)

虽然可能不明智1,但TestCaseSource 的支持静态方法可以“加载数据库内容”2,只要它不依赖于首先调用OneTimeSetUp。 TestCaseSources 应该是 FAST3 并且是无资源的,因为所花费的时间是“幻影时间”4,在测试中没有考虑在内。

1,2,3,4 评估 TestCaseSources 的失败,例如数据库错误,将导致测试不可发现。评估 TestCaseSources 所花费的所有时间都会减慢每次测试探索的速度。此评估的时间开销不包括在单独的测试计时中(即使在运行单个测试时),也不会使用标准工具显示。稍后追踪并修复如此缓慢的 TestCaseSources 很乏味。

关于c# - 为什么 [SetUpFixture] 中的 [OneTimeSetUp] 在 (Test,TestCaseSource()) 之后调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46727966/

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