创建单元测试是一件乏味的事情。代码本身是重复的,通常需要与被测代码一样多的努力,除此之外,单元测试代码本身需要修复和调试。幸运的是,单元测试非常适合自动化,而工具指导可以极大地简化测试创建,减少调试和修复的数量,并收集结果和指标以提供项目分析。


超越IDE


例如,许多IDE为Junit提供了单元测试创建向导,但没有提供完成该过程的“内容”。断言需要手动定义,如果使用模拟框架,则需要大量手动编码。这就是通过在开发人员的IDE中提供实时、上下文感知的帮助来引导测试创建的地方。通过引导式测试创建,可以快速高效地完成简单框架单元测试中缺少的“内容”,因为测试助手会执行以下操作:


创建测试框架,实例化对象,并配置适当的模拟对象和方法。


执行测试自动化执行的运行时分析,以突出显示测试期间更改的对象值,并建议验证这些值的断言。


标识应该模拟的方法调用,以便更好地隔离测试中的代码。


检测已创建但在测试完成后未释放的系统资源,这可能会创建不稳定的测试环境。


收集代码覆盖率和其他指标。


减少模拟的复杂性


单元测试意味着被测试对象的隔离,如果存在许多依赖项,则需要相当多的工作。即使使用Mockito或PowerMock等模拟框架,仍然需要大量的手动编码。使用自动测试助手工具,你可以检测依赖项并自动填写框架所需的详细信息。该工具本身分析测试中的代码,自动检测依赖项,并向开发人员提出建议。


通过自动化减少测试套件维护


测试套件的维护与测试创建所需的许多工作重叠,例如创建新测试、修改测试以适应底层逻辑、模拟依赖项、测试执行和验证。在测试维护期间从自动化工具获得帮助与在创建期间一样有价值,因为它提供了测试执行期间收集的运行时分析结果的更新反馈。例如,在运行时检测到测试对象中的新依赖项,该工具会提示开发人员如何处理它。在这个阶段,同样重要的是确保断言仍然有效。助手提供的建议可以检测代码中的更改,并更新断言以反映新的业务逻辑。


最大限度地利用现有工具


已经进行单元测试的Java开发人员可能会使用Junit,并且可能会为他们的项目使用断言框架,例如Mockito或PowerMock。测试自动化工具需要利用这些现有工具,因为替换单元测试中的现有投资将消除任何成本和时间效益。与这些现有工具无缝集成至关重要。


结论


单元测试有明显的好处,尽管大多数开发团队都意识到了这一点,但许多开发团队都被创建和维护测试的工作所阻碍。引导式单元测试创建技术可以轻松地消除这些障碍,并自动化单元测试的日常方面,包括创建、隔离、模拟和维护。为了加快技术的采用,引导式测试创建工具利用了开发团队在测试和模拟框架方面的现有投资,并在将质量带回产品的同时,将时间回馈给开发人员。