【问题标题】:How do I create integration/unit test sequencing in vs2012?如何在 vs2012 中创建集成/单元测试排序?
【发布时间】:2015-03-08 02:54:17
【问题描述】:

我有大约 200 个单元测试,用于针对具有异步消息传递 API 的模拟硬件运行的应用程序。所有测试都单独运行和通过,但由于外部调用的异步性质,其中许多测试在作为一个组运行时会失败。

有没有一种方法可以在 vs 2012 中设置测试序列,以便在每次测试后添加一小段延迟,让外部人员有机会清除缓存?

编辑: 顺序似乎也有些重要,某些测试比其他测试锁定外部资源的时间更长。

我知道这些是集成测试和单元测试。其中大部分是单元测试,其中大部分是模拟服务,其中大部分是 api 集成测试。

我继承了这套测试,因此“集成测试”和“单元测试”的分离超出了我的控制范围。

一点背景:我们在这里与 LabView dll 进行交互,这些 dll 带有我们正在尝试缓解和煽动的一系列怪癖。

【问题讨论】:

  • 你是用MSTest还是别的什么?
  • 这里请注意:如果测试由于排序而失败,则它们不是单元测试。这是一个非常糟糕的代码气味,应该修复原因本身,而不是通过延迟/订单来解决。但是,如果您想要端到端/集成测试,可能有适合的框架。
  • 另外,根据您的编辑,您的测试似乎直接调用外部资源。 IMO 您应该研究的第一步是嘲笑除您正在测试的课程之外的所有其他内容。如果不是孤立的,就不是单元测试。
  • 在 MSTest 上是的。

标签: c# unit-testing visual-studio-2012 testing


【解决方案1】:

如果您使用的是 VS 2012 或更高版本,还有假货,即 MS 模拟。

否则 RhinoMock 工作得相当好。有点学习曲线。

我还分解了类以分离相互冲突的单元测试。

【讨论】:

    【解决方案2】:

    是的,您可以使用以下方式添加等待:

    System.Threading.Thread.Sleep(5000);
    

    购买 我建议您创建一个简单的 LabVIEW 函数,在 while 循环中查询所有仪器的状态并“等待”每个仪器响应。例如,如果您使用的是 GPIB,那么标准查询是:

    *IDN?
    

    您还可以查看 NI 的 TestStand 产品,该产品专为协调复杂的异步测试而设计,我相信它有一个您可以从 C# 访问的 API。 http://www.ni.com/teststand/whatis/

    【讨论】:

    • LabVIEW 的答案是一个绝妙的主意。根据应用程序的规模,我不知道它有多可行,但有一两点证明这可能非常有用。
    • 您能否将其标记为已回答或告诉我为什么答案不完整?谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多