TestNG + Mocktio
JUnit是Java单元测试的一站式解决方案,它把测试驱动的开发思想介绍给了Java开发人员,并教会他们如何有效地编写单元测试。但是在过去的几年中,JUnit的改进并不大,所以为当前复杂的环境编写测试任务已经变得越来越困难,即JUnit必须与其他一些补充性测试框架集成起来。TestNG是一个测试Java应用程序的新框架,功能十分强大。
EasyMock和Mockito可以极大地简化单元测试的编写过程,因而被许多程序员应用在日常工作中。这两个工具无法实现对静态函数、构造函数、私有函数、Final函数和系统函数的模拟,而这些函数在大型系统中必不可少。
JUnit + JMock
单元测试一般只测试某一个功能,但是由于类之间的耦合,往往难以把功能隔离开来。例如,想要测试某个业务逻辑处理数据的功能,但是数据是从Database取回的,这就涉及DAO层的类调用。但是很多时候,你不想让单元测试函数去访问数据库(,而是希望有一个假的DAO类刚好可以返回你需要的测试数据。此时即可使用Mock,它的作用是在单元测试里模拟类的行为和状态。
JMock与Mocktio都是提供Mock功能的框架。
Git/SVN + Jenkins
Git和SVN都是版本控制器。Git是分布式管理的版本控制器,通常被用于分布式模式,也就是说,每个开发人员从中心版本库或服务器上检出代码后都会在自己的机器上克隆一个与中心版本库一模一样的本地版本库。而SVN是集中式管理的版本控制器。
Jenkins是一个开源的、提供友好操作界面的持续集成工具,主要用于持续、自动地构建或测试软件项目、监控外部任务的运行。Jenkins是用Java语言编写的,既可以在Tomcat等流行的Servlet容器中运行,也可以独立运行。Jenkins通常与版本管理工具(SCM)和构建工具结合使用。
常用的版本控制工具有SVN和Git等,常用的构建工具有Maven、Ant和Gradle等。
Jenkins涉及持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)。持续集成强调开发人员在提交新代码之后,立刻进行构建和(单元)测试。根据测试结果,确定新代码和原有代码能否正确地集成在一起。持续交付是在持续集成的基础上,将集成后的代码部署到类生产环境中。
Jenkins可以把FTP、SVN或Git中存储的Java程序持续构建到生产与测试环境中。也就是说,在微服务分布式环境下,不需要每次更新都在各个服务器上上传代码。一个项目的服务器越多,Jenkins的优势越明显。与Jenkins类似的软件有Travis CI等,不再赘述。
Puppet
Puppet是Linux、UNIX和Windows操作系统的自动管理引擎,它根据集中式规范执行管理任务(例如,添加用户、安装软件包和更新服务器配置等)。Puppet的简单陈述规范语言的能力提供了强大的代理服务,制定了主机之间的相似之处,同时使它们能够提供尽可能具体的、必要的管理内容,它依赖的先决条件和对象之间的关系清楚且明确。
Puppet主要解决的是环境部署的难点,例如,需要给50台服务器安装JDK,或者给10台服务器的MongoDB升级版本。如果在升级过程中出现意外的Bug和错误,此时就可以通过Puppet编写相关配置文件,一键安装到所有服务器上。与Puppet类似的软件有