【发布时间】:2021-04-22 12:01:12
【问题描述】:
我有一个异步任务方法,它并没有真正返回任何东西,因为它所做的只是迁移一些数据。 但是,我想以某种方式测试该方法,我所能想到的就是使该方法在完成时返回一个布尔值(如果它确实迁移了数据,则为 true,否则为 false),尽管该过程完全没有必要,但它是仅用于 xunit 测试。 这样做是否被认为是不好的做法?或者是否有另一种测试异步任务的方法?
提前谢谢你!
【问题讨论】:
-
你不测试方法返回,而是测试它做什么。如果它正在迁移数据,那么您设置 before-testdata,运行您的方法,然后检查数据是否符合预期结果。 (如果这不可能,最省力的方法是让方法在出现问题时抛出异常,并测试它是否在不抛出异常的情况下运行)
-
只测试方法完成后数据是否迁移到应该的地方。或者由于某种原因这是不可能的?同样仅测试返回值是不够的:您的方法可能有一个错误,即使它没有迁移数据,它也会返回 true。
-
请注意,方法
async Task正在返回Task类型的值,您可以检查它是成功还是失败(抛出异常) -
请与我们分享您简化的迁移方法以及您是如何尝试解决测试问题的以及您在哪里卡住了。
标签: c# unit-testing testing