我正在尝试在C#中运行UnitTest,但是仅当另一个UnitTest通过时才可以?不能完全正常工作,有人知道我该怎么做吗?
编辑:在NUnit中
答案 0 :(得分:0)
您可以通过使用[Order()]属性来完成此操作,尽管它可能不是最干净的解决方案。 (docs)
这将使您可以将依存关系测试作为[Order(1)]运行,并将依赖于第一个测试的测试作为[Order(2)]运行。您可以在所有测试中共享驱动程序,如果第一个测试失败,请关闭驱动程序,从而导致依赖于第一个测试通过的其他测试失败。
答案 1 :(得分:0)
我前一段时间遇到了这个问题。我想出的解决方案可能不是最优雅的,但它可以工作。为了解决订购问题,我创建了自己的单元测试框架。这是我工作的公司的礼貌,所以我无法与您分享。
在测试框架中,存在
例如,如果我正在进行集成测试,我将拥有一个“ http实用程序”,并且模板将包含端点和有效负载。
我想运行的测试需要存储到中间数据结构中,例如json。这使我可以将测试序列化为模板。
现在这是棘手的地方...使用一些精美的T4模板,我将获取json数据并将其序列化为模板列表。然后,我将按照执行顺序和相关性对测试进行排序(对于一个链接集成测试,一个测试可能依赖于另一个测试)。然后,我将为每个模板生成一个单元测试。然后,生成的单元测试将在构建上运行
对于在测试失败的情况下取消测试执行的问题,您可以使用一些奇特的逻辑将其内置到模板中
static List<ITestTemplate> requiredTests = new List<ITestTemplate>();
...
if(requiredTests.Any(t => t.Failed))
Assert.IsTrue(false) //fail subsequent tests