是否有任何工具可以记录Java对象以进行单元测试?

时间:2015-02-16 07:40:02

标签: unit-testing testing junit mocking tdd

我想编写一些单元测试,并且必须创建或模拟我的程序中使用的对象。我想知道是否有任何工具可以在实际运行期间捕获和记录程序的对象并将其用于单元测试(与端到端测试中的Selenium Recorder相同)?

2 个答案:

答案 0 :(得分:1)

我从来没有听说过这样的工具。你必须自己写。

您可以依赖应用程序的持久层:

  • 在应用程序执行的某个特定点存储对象,
  • 在测试中再次加载这些对象。

您可能会被像databene-benerator这样的工具感兴趣

  

这是一个为您的被测系统生成逼真且有效的高容量测试数据的框架

enter image description here

答案 1 :(得分:1)

我不得不在没有任何测试的情况下重构大型(生产)代码库,但不幸的是没有找到任何东西,因此我不得不自己开发工具。主要目标是可扩展性(在每个分析阶段插入的能力)和质量(单元测试的高代码覆盖率)。

因此,任何正在寻找这种工具的人都可以尝试testrecorder。有几种方法可以根据实际使用情况生成测试。最简单的方法可能是使用callsite recorder

try (CallsiteRecorder recorder = new CallsiteRecorder(ExampleObject.class.getDeclaredMethod("inc"))) {
  printTest(recorder.record(() -> {
    int doubleInc = exampleObject.inc().inc().get();
    System.out.println(doubleInc);
  }));
  printTest(recorder.record(() -> {
    int resetInc = exampleObject.reset().inc().get();
    System.out.println(resetInc);
  }));
}