代码之家  ›  专栏  ›  技术社区  ›  andy

用线程、事件和私有方法测试类

  •  3
  • andy  · 技术社区  · 14 年前

    普遍共识

    普遍的共识似乎是:

    • “如果需要测试私有方法,则说明类的设计不好”
    • 如果您的类很复杂,则需要将其分开

    问题类

    长跑 任务是:

    • 对数据做一些非常简单的映射
    • 把数据发到别的地方

    • 它需要能够很好地容错,在出现某些错误时能够重试各种任务。

    类的重点是抽象出许多容错和线程。。。基本上是通过使用一个简单的计时器类和一些内部列表来跟踪错误等。

    由于计时器的原因,某些方法在不同的线程上异步调用。。。另外,一些方法依赖于全局私有字段。

    我该如何测试这门课。。。尤其是因为这么多的方法是私有的?

    干杯伙计们

    2 回复  |  直到 13 年前
        1
  •  4
  •   Don Kirkby    7 年前

    我将提取代码以将数据轮询到可以模拟的单独类中,并提取出于相同原因发送数据的代码。您可能需要提取数据映射代码,这取决于它有多简单。

    我肯定会在单元测试中使用模拟计时器,否则您的测试很难设置并且运行缓慢。可以在构造函数中传入计时器,也可以公开可以设置的属性。我经常在构造函数中创建一个常规计时器,然后从单元测试中覆盖它。

    您还可以提取重试逻辑,以便可以将其与其他代码分开测试。将代码的委托传递给try和retry可能是将数据代码与retry逻辑分离的一种方法。你也可以使用 IEnumerable 以及 yield

    如果您真的需要测试多线程场景,那么有一些工具可以在测试中协调线程。其中一个是我创建的港口 Java MultithreadedTC 打电话 TickingTest

        2
  •  1
  •   Cameron Skinner    14 年前

    你可以试试 JMock

    编辑:哇!没有看到C标签。也许有一个C#相当于杰莫克。