maven使用junit3

在本系列中,我们已经学习了建立基本的Spring MVC应用程序并学习了如何在Spring MVC中处理表单 。 现在该讨论更多涉及的话题了。 但是,在我们涉足更深的领域之前,让我们先进行一些基础设置。

单元测试

我不是TDD传播者。 我在那里说了。 我从来没有能够编写任何软件的地方,对于每段代码,我都先编写了一个测试,然后编写了代码。 如果您这样做了,并且被编码所雇用,请告诉我。 我很想了解你。 说真的

我对TDD的意见分歧到此为止。 除了在代码之前编写测试(某种程度上我根本无法动动脑筋)之外,我还是单元测试的大力支持者。 我坚信使用JUnit测试所有功能(公共但非getter设置器,方法)。 我非常喜欢使用cobertura报告代码覆盖率。 我是maven的忠实拥护者,它使我只需一个命令就可以将它们整合到一个漂亮HTML报告中。

我将在本系列中使用JUnit 4。 让我们添加依赖项。

档案:\ pom.xml

<properties>                                                     <junit.version>4.10</junit.version>
</properties>  <!-- Unit testing framework. -->
<dependency>                           <groupId>junit</groupId>           <artifactId>junit</artifactId>     <version>${junit.version}</version><scope>test</scope>
</dependency>

让我们添加一个哑类来演示测试。

文件:/src/main/java/org/academy/HelloWorld.java

package org.academy;public class HelloWorld {private String message = 'Hello world. Default setting.'; public String greet(){return message; }public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}
}

最后是JUnit对其进行测试。

文件:src / test / java / org / academy / HelloWorldTest.java

package org.academy;import static org.junit.Assert.*;import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class HelloWorldTest {@AutowiredHelloWorld helloWorld;private final static Logger logger = LoggerFactory.getLogger(HelloWorldTest.class);@Testpublic void test() {    logger.debug(helloWorld.greet());assertEquals(helloWorld.greet(), 'Hello world, from Spring.');}
}

您可能已经注意到,单元测试中的helloWorld从未在代码中初始化。 这就是Spring的IoC魅力 。 为了使这项工作有效,我们使用了@ RunWith,@ ContextConfiguration和@Autowired。 而且我还为Spring提供了足够的信息,以便能够创建HelloWorld实例,然后将其注入到HelloWorldTest.helloWorld中。 另外,assertEquals正在检查与HelloWorld类中实际进行硬编码的消息完全不同的消息。 这是在下面提到的xml文件中完成的。 请注意该文件在Maven结构中的位置。

文件:/src/test/resources/org/academy/HelloWorldTest-context.xml

<?xml version='1.0' encoding='UTF-8'?>
<beans xmlns='http://www.springframework.org/schema/beans'xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:p='http://www.springframework.org/schema/p'xmlns:context='http://www.springframework.org/schema/context'xsi:schemaLocation='http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd'><bean id='helloWorld' class='org.academy.HelloWorld'><property name='message' value='Hello world, from Spring.' /></bean>
</beans>

我可以通过多种方式将此配置文件提供给单元测试。 @RunWith(SpringJUnit4ClassRunner.class)可以添加,但不是必需的 。 我在这里提供的只是在大多数情况下都可以使用的香草方法,但我鼓励观众进行试验。

单元测试范围/代码范围。

对于个人开发人员和技术主管,我认为关于自动/半自动/简单的代码覆盖率报告的重要性还没有足够的评论。 除非您虔诚地实践TDD(以我之前从未提到过的方式进行过实践),否则即使是单个开发人员也绝对不可能知道单元测试是否涵盖了代码的所有逻辑分支。 我什至不打算谈论团队/组织的技术负责人如何确保其产品经过充分的单元测试。 我个人认为,任何未经足够的单元测试和报告测试范围的软件产品,都是无法接受的风险。 期。 诚然有点强硬立场,但事实就是如此。

我对强硬立场的坚定信念来自这样一个事实,即报告测试覆盖率是如此容易。 在此示例中,我将使用cobertura。 您需要将cobertua添加到Maven pom。

档案:pom.xml

<!-- Reporting -->
<plugin>                                                              <groupId>org.apache.maven.plugins</groupId>                       <artifactId>maven-site-plugin</artifactId>                        <version>3.0</version>                                            <configuration>                                                   <reportPlugins>                                               <!-- Reporting on success / failure of unit tests -->     <plugin>                                                  <groupId>org.apache.maven.plugins</groupId>           <artifactId>maven-surefire-report-plugin</artifactId> <version>2.6</version>                                </plugin>                                                 <!-- Reporting on code coverage by unit tests. -->        <plugin>                                                  <groupId>org.codehaus.mojo</groupId>                  <artifactId>cobertura-maven-plugin</artifactId>       <version>2.5.1</version>                              <configuration>                                       <formats>                                         <format>xml</format>                          <format>html</format>                         </formats>                                        </configuration>                                      </plugin>                                                 </reportPlugins>                                              </configuration>

完成此操作并添加JUnit并添加实际的JUnit测试后,您只需要运行

mvn -e clean install site

创建一个漂亮的基于HTML的代码覆盖率报告。 该报告将允许您单击被测试的源代码,并为单元测试的代码提供漂亮的绿色补丁,而对于那些穿过裂缝的代码则为您提供红色的补丁。

记录中

Log4j很好, Logback更好 。 只是不要使用System.out.println()进行日志记录。

如果没有适当的日志记录,您可能会走很长一段路。 但是,我花了太多周末和晚上来追踪生产问题,而企业却不知所措,希望有某种方法可以知道应用程序中发生的事情,而不必一味猜测。 如今,有了成熟的api(如slf4j)和稳定的实现(如logback),开发人员只需为每个类添加一条额外的行即可利用企业级日志记录基础结构。 不从任何项目开始就立即使用正确的日志记录是没有意义的。

添加slf4j并重新登录到Maven依赖项。

文件:\ pom.xml。

<!-- Logging -->
<dependency>                                <groupId>ch.qos.logback</groupId>       <artifactId>logback-classic</artifactId><version>${logback.version}</version>
</dependency>

确保排除Spring的默认日志记录,即公共日志记录。 如果您想知道logback是否真的那么好,我声称这就是为什么Spring不选择它作为开始。 在我的辩护中,这是Spring官方博客上的链接 ,他们说:“如果我们可以倒计时并现在作为一个新项目启动Spring,它将使用不同的日志记录依赖性。 首选的可能是Java的简单日志记录外观(SLF4J),……”

文件:\ pom.xml。

<!-- Support for testing Spring applications with tooTestNG This artifact is generally always defined the integration testing framework and unit testin
<dependency>                                         <groupId>org.springframework</groupId>           <artifactId>spring-test</artifactId>             <version>${org.springframework.version}</version><scope>test</scope>                              <exclusions>                                     <exclusion>                                  <groupId>commons-logging</groupId>       <artifactId>commons-logging</artifactId> </exclusion>                                 </exclusions>
</dependency>

提供用于注销的配置。

文件:/src/main/resources/logback.xml

<?xml version='1.0' encoding='UTF-8'?>
<configuration><appender name='CONSOLE' class='ch.qos.logback.core.ConsoleAppender'><encoder><pattern>%d %5p | %t | %-55logger{55} | %m %n</pattern></encoder></appender><logger name='org.springframework'><level value='INFO' /></logger><root><level value='DEBUG' /><appender-ref ref='CONSOLE' /></root>
</configuration>

最后,在需要记录的每个类的开头(应该是所有类)的开头添加一个魔术贴。

文件:src / test / java / org / academy / HelloWorldTest.java

[...]
private final static Logger logger = LoggerFactory  .getLogger(HelloWorldTest.class);
[...]
logger.debug(helloWorld.greet());
[...]

你们都在那里准备好了。 现在是时候深入春天了。

快乐的编码。

想了解更多吗?

这里是本系列早期文章的链接。
Hello World with Spring 3 MVC
使用Spring 3 MVC处理表单

而且,当然强烈推荐
Spring 3使用JUnit 4进行测试。
使用Spring框架运行单元测试 @RunWith JUnit4以及SpringJUnit4ClassRunner和参数化 Junit和Spring的问题。

在Tech for Enterprise博客上,来自JCG合作伙伴 Partho的 参考资料: JUnit,Logback,Maven和Spring 3 。

翻译自: https://www.javacodegeeks.com/2012/07/junit-logback-maven-with-spring-3.html

maven使用junit3

maven使用junit3_JUnit,Logback,带有Maven 3的Maven相关推荐

  1. 解决maven下载jar慢的问题(如何更换Maven下载源)

    解决maven下载jar慢的问题(如何更换Maven下载源) 参考文章: (1)解决maven下载jar慢的问题(如何更换Maven下载源) (2)https://www.cnblogs.com/li ...

  2. maven 学习笔记(一)eclipse+android+maven

    由于工作需要最近开始接触java,对于这类开源的东西发现居然是第一次接触,里面有太多的东西需要熟悉.其中最著名的就是maven,据说可以使得工程从编译至打包发布,效率提高很多倍.不过使用起来却比较麻烦 ...

  3. 《maven官方文档》5分钟开始Maven

    原文地址 前提 你必须明白如何在电脑上安装软件.如果你不知道如何做,请向你学校.办公室里等的人请教下,或者付费给他人让他们解释给你.Maven邮件组不是寻求这个建议的最好地方. 安装 Maven是个J ...

  4. maven安装_如何从官网下载Maven与安装Maven

    1 打开浏览器,输入http://maven.apache.org/ 2 点击左侧的Download 3 向下滚动页面,点击apache-maven-3.6.0-bin.zip,下载最新的压缩包 4 ...

  5. [转]Maven如何手动添加jar包到本地Maven仓库

     Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供.基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项 ...

  6. 3.将maven项目jar纳入maven仓库,Mave项目依赖另外一个Maven项目的案例

     1 若想让maven项目依赖另外一个maven项目,被依赖的项目要在maven仓库中有相应的jar包,所以要对依赖的项目执行mvninstall命令. 2 新建第二个项目模块HelloFrien ...

  7. Maven入门指南② :Maven 常用命令,手动创建第一个 Maven 项目

    1.根据 Maven 的约定,我们在D盘根目录手动创建如下目录及文件结构: 2.打开pom.xml文件,添加如下内容: 1 <project xmlns="http://maven.a ...

  8. Maven最全教程,还有哪里对maven不解的地方看过来!

    前言:目前所有的项目都在使用maven,可是一直没有时间去整理学习,这两天正好有时间,好好的整理一下. 一.为什么使用Maven这样的构建工具[why] ① 一个项目就是一个工程 如果项目非常庞大,就 ...

  9. IntelliJ IDEA 使用Maven工具 (新手入门简单操作,maven的下载,安装,配置)

    一.maven的概述 1.什么是maven   maven是一个项目管理工具,包含项目管理,插件以及目标的逻辑等.maven为我们提供了一系列的执行流程: maven执行流程 2.maven的下载安装 ...

  10. maven snapshot依赖 打包_Maven教程2:Maven项目构建过程练习

    点击上方"Java技术前线",选择"置顶或者星标" 与你一起成长 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化 ...

最新文章

  1. python之装饰器初识
  2. JVM内存管理–GC算法精解(五分钟让你彻底明白标记/清除算法)
  3. 每个java 初学者都应该明白的
  4. 4号团队-团队任务5:项目总结会
  5. JS中window.showModalDialog()详解
  6. excel字符串反转
  7. opython3l_python之 数据类型判定与类型转换
  8. OpenCV数据结构
  9. HTML知识积累及实践(四) - 表单元素
  10. python压缩算法_Python实现压缩和解压缩ZIP文件的方法分析
  11. 网站建设及上线的详细步骤(原创)
  12. OpenWiFi简介与学习记录
  13. 单片机c语言led灯闪烁程序,单片机LED灯闪烁程序
  14. Mac菜鸟进阶必学的10个Mac小技巧
  15. 鸿蒙系统问世(开源!!!)
  16. 操作成功的提示信息动态添加
  17. [dfs树]「CEOI 2017」One-Way Streets
  18. vue3+ts+element-plus动态图标生成方式
  19. SVN导入项目转变为Maven项目时pom.xml报错
  20. OpenEmbedded Yocto BitBake Poky以及之间关系

热门文章

  1. jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令
  2. JAVA面试常考系列二
  3. 来自一位家长的肺腑之言,句句在理!!!
  4. 使用Servlet上传多张图片——Service层(ProductInfoService.java和ProductInfoServiceImpl)
  5. struts+hibernate+oracle+easyui实现lazyout组件的简单案例——struts.xml配置详情
  6. Oracle数据库基本概念理解(1)
  7. 二叉树删除节点+思路分析
  8. 第10步 (1)logback.xml日志配置(2) ftp(上传文件)服务器配置(3) idea注入和自动编译配置(4)项目提交gitee(5)fe助手和restlet client
  9. js 时间戳转换成时间_JavaScript 时间戳转成日期格式
  10. python中ls是什么_使用Python代码实现Linux中的ls遍历目录命令的实例代码