单元测试代码自动化生成解决方案

简介: 在码农界有这样一个Eclipse插件——CodePro Analytix,通过这个插件可以自动批量生成单元测试代码。

写在前面的话:

鄙人星云,今年六月份,刚到北京入职了一家国企,由于刚进项目对现有的项目业务还不是很熟悉,但是领导已经下了命令,要我给现有的项目写单元测试代码,项目比较大,业务还不熟悉,如果全部手写测试代码,必然是个累死人不偿命的事情。

那么有没有更好的解决方案呢?答案自然是肯定的。

解决方案:

通过查询资料得知,在码农界有这样一个Eclipse插件——CodePro Analytix,通过这个插件可以自动批量生成单元测试代码。

CodePro Analytix是一个基于Eclipse的快速开发环境,能够自动的完成重复的任务使Java开发者快速的开发出高质量的软件。能够保证代码质量,包括代码评审、metric、设计模式、测试,等等

使用指南:

  1. CodePro Analytix 插件下载
  2. 下载后解压到一个路径下,路径中最好不要有中文。
    解压后像这样:

image

  1. 打开你的Eclipse IDE

    我用的IDE是STS——Spring 官方推出的Eclipse发行版。
  2. Help------> Install new Software
    image

5.Work With: --------> add... ------->Local...
浏览找到刚才解压的路径
image
6.选中这三个选项,然后一步一步安装即可
image
7.安装完成后重启下你的Eclipse 即可。
8.修改配置

Windows------> Perference ——————Code Pro ------->JUnit ----->Generated Code
默认是这样的:

image

  1. 但是一般我们需要修改下才符合我们常规的使用
    image

10.最后选中项目中的源码文件或者源码文件夹或项目名,右键------>Code Pro Tools----->Generate Test Case即可
image
这样,批量的单元测试代码就生成了。

接下来讲解一些注意事项:

  1. 关于JUnit报initializationError的解决方法
<!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest-core -->
<dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
            <version>1.3</version>
            <scope>test</scope>
</dependency>

2.关于一些莫名奇妙无法处理的异常处理
比如莫名奇妙的空指针异常,可以在测试注解中添加这个值

    @Test(expected = java.lang.NullPointerException.class)

或者如果有其他的异常类似这个:

@Test(expected = org.apache.axiom.om.OMException.class)
    public void testSerialize_1()
        throws Exception {
        PostEvent fixture = new PostEvent();
        fixture.setEventName("");
        fixture.setEventData("");
        fixture.localEventNameTracker = true;
        fixture.localEventDataTracker = true;
        QName parentQName = new QName("");
        OMFactory factory = new OMLinkedListImplFactory();
        MTOMAwareXMLStreamWriter xmlWriter = new MTOMAwareOMBuilder();

        fixture.serialize(parentQName, factory, xmlWriter);

        // add additional test code here
        // An unexpected exception was thrown in user code while executing this test:
        //    org.apache.axiom.om.OMException: localname can not be null or empty
        //       at org.apache.axiom.om.impl.llom.OMElementImpl.<init>(OMElementImpl.java:135)
        //       at org.apache.axiom.om.impl.llom.OMElementImpl.<init>(OMElementImpl.java:118)
        //       at org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory.createOMElement(OMLinkedListImplFactory.java:75)
        //       at org.apache.axis2.databinding.utils.writer.MTOMAwareOMBuilder.writeStartElement(MTOMAwareOMBuilder.java:101)
        //       at org.apache.axis2.databinding.utils.writer.MTOMAwareOMBuilder.writeStartElement(MTOMAwareOMBuilder.java:92)
        //       at com.travelsky.dcsi.PostEvent.serialize(PostEvent.java:178)
        //       at com.travelsky.dcsi.PostEvent.serialize(PostEvent.java:151)
    }

看到这样的信息就添加注解:

@Test(expected = org.apache.axis2.databinding.ADBException.class)
  1. 关于断言测试常用的几种用法:
//如果result不为空返回true测试通过
 assertNotNull(result);
//第一个参数是期待结果,第二个是实际的引用对象
assertEquals(true, result.hasNext());
//支持多种数据类型
assertEquals(2, result.next());
//期待结果是null 接受一个引用对象参数
assertNull(result)

本篇完~
交流即分享,分享才能进步! 不对之处,还请各位前辈多多指教。 by 星云 *

相关文章
|
5天前
|
机器学习/深度学习 人工智能 算法
探索软件测试中的自动化与人工智能
【5月更文挑战第31天】本文将深入探讨自动化和人工智能如何革新软件测试领域,通过实例分析它们如何提高测试效率和准确性,并预测未来发展趋势。
|
6天前
|
测试技术
软件测试中的自动化测试技术应用
在当今快速发展的软件行业中,自动化测试技术正变得越来越重要。本文将探讨自动化测试技术在软件测试中的应用,包括其优势、常见工具及实施步骤。通过了解自动化测试技术的相关内容,读者可以更好地理解其在软件测试中的作用,提高测试效率和质量。
20 0
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
探索软件测试的未来:AI 驱动的自动化测试方法
【5月更文挑战第29天】随着人工智能(AI)技术的不断发展和成熟,其在软件测试领域的应用也日益广泛。本文旨在探讨 AI 如何改变软件测试的面貌,特别是自动化测试方法。我们将分析当前自动化测试的挑战,并介绍 AI 如何提供解决方案,包括智能化测试用例生成、测试执行优化、以及结果分析等。通过实际案例研究,我们还将讨论 AI 在提高测试效率、减少错误和提升软件质量保障中的作用。最后,文章将预测 AI 在自动化测试领域的未来趋势,并提出对测试工程师的建议。
|
2天前
|
Java 测试技术 Web App开发
《手把手教你》系列技巧篇(六十二)-java+ selenium自动化测试-RemoteWebDriver让你的代码与测试分离(远程测试)
【6月更文挑战第3天】本文介绍了在没有本地浏览器的情况下,如何使用RemoteWebDriver进行远程自动化测试。RemoteWebDriver分为客户端和服务端,客户端运行测试代码,服务端启动服务。服务端需要安装JDK、浏览器和对应的WebDriver,并启动selenium-server-standalone.jar。客户端通过URL连接到服务端,并指定预期的浏览器类型。这样,客户端的测试代码就能远程控制服务端的浏览器执行自动化测试。RemoteWebDriver的优点包括跨平台和浏览器测试、提高测试稳定性以及使测试环境和执行代码的机器分离。
20 3
|
5天前
|
敏捷开发 Devops 测试技术
探索软件测试中的自动化与持续集成
【5月更文挑战第31天】在软件开发的生命周期中,测试是确保产品质量和用户体验的关键环节。随着敏捷开发和DevOps实践的普及,自动化测试和持续集成(CI)已成为提升效率和质量的重要工具。本文将探讨自动化测试的策略、工具选择以及如何有效地整合到持续集成流程中,以实现更快的迭代和更高的部署频率。
|
5天前
|
机器学习/深度学习 人工智能 测试技术
探索软件测试的新时代:AI与自动化的融合
【5月更文挑战第31天】本文探讨了人工智能和自动化技术如何革新软件测试领域,提高效率与准确性。我们将分析这些技术如何帮助测试人员更快地识别软件缺陷,预测潜在问题,并优化测试流程。
|
5天前
|
机器学习/深度学习 人工智能 算法
探索软件测试的新维度:AI与自动化的融合
【5月更文挑战第31天】本文深入探讨了人工智能(AI)与自动化在软件测试领域的结合应用,揭示了这一趋势如何革新传统的测试流程,提升效率和准确性。通过分析AI技术在缺陷预测、测试用例生成和结果分析等方面的应用,文章展示了AI如何帮助测试人员识别更复杂的问题,减少人为错误,并缩短产品上市时间。
|
5天前
|
机器学习/深度学习 人工智能 算法
软件测试的演变与未来:从手工到自动化的旅程
【5月更文挑战第31天】本文深入探讨了软件测试领域的历史发展、当前趋势以及未来预测。文章首先回顾了早期软件测试的基本形式,然后分析了自动化测试工具如何改变行业现状,并展望了人工智能和机器学习如何可能塑造软件测试的未来。通过具体案例分析,本文旨在为读者提供一个关于软件测试进化历程的全面视角。
|
5天前
|
测试技术 UED
软件测试中的自动化与手动方法比较
【5月更文挑战第31天】本文将探讨软件测试中自动化和手动方法的优缺点,以及它们在不同场景下的应用。通过比较这两种方法,我们将了解它们各自的优势和局限性,并提供一些建议来帮助选择适合特定项目的测试策略。
|
5天前
|
测试技术 UED
软件测试中的自动化与手动测试:一种互补策略
【5月更文挑战第31天】随着软件开发行业的迅速发展,软件测试已经成为确保产品质量和用户体验的关键环节。本文将探讨自动化测试和手动测试在软件测试中的作用,以及如何有效地结合这两种方法以提高测试效率和质量。我们将分析各自的优缺点,并提供一些实用的建议,帮助读者在实际工作中更好地应用这两种测试方法。