【发布时间】:2023-02-16 23:12:11
【问题描述】:
我需要断言异步方法的 initial synchronous part 在一定时间内执行。流利的断言可能吗?我还需要断言最小和最大总持续时间(例如,使用CompleteWithinAsync和NotCompleteWithinAsync),因此解决方案需要在单个任务调用/等待表达式中涵盖所有三个时间(参见我的其他问题How do I assert that an async task should complete within a minimum and maximum time?) .
【问题讨论】:
-
在不知道那些指定方法的情况下,我会尝试获取一个 DateTime.Now,然后再定义一个 TimeSpan 并断言两者之间存在差异。这行得通吗?
-
当方法返回
Task时,初始同步部分将结束,因此只有您 fluentassertions.com/executiontime 无需等待。但是,如果不模拟TaskScheduler的行为,您可能会得到一些变化。 -
只是好奇:这会告诉你什么,到底是什么?如果测试失败或成功,可能取决于机器及其当时的负载。
-
@Fildor,它是一种可能导致 CI/CD 管道间歇性故障的测试。
-
@Fildor 测试涵盖了一些复杂的异步缓存逻辑。测试时,使用虚拟“工作”并控制持续时间,并且断言具有很大的余量。它不完美,但有必要,而且最坏的情况是测试将是明确的(即,不在 CI/DI 中运行)。
标签: c# fluent-assertions