Vi,Java,Ant,Junit的自学报告
Vi,Java,Ant,Junit,SonarQube的自学报告
Vi/Vim
参考资料:《鸟哥的Linux私房菜》
为什么在Linux的世界中选择vi,vim
- 可以快速地在终端中编辑属于纯文本文件的配置文件,方便系统管理员的使用。
- vim有代码高亮,方便程序设计。
- 内置的文本编辑器
vi和vim的区别
vim是从 vi 发展出来的一个文本编辑器 。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs 并列成为类Unix系统用户最喜欢的编辑器。
vi的使用
三种模式:
- 一般模式(默认,esc)
- 编辑模式(按i、o键)
- 命令行模式(按‘:’、‘/’、‘?’)
注意:编辑模式和命令行模式之间不能切换,必须先转换到一般模式
不同模式下常用的快捷键和命令
命令模式:
- :ZQ 无条件退出
- :q! 无条件退出
- :ZZ 存盘并退出
- :wq 存盘并退出
一般模式:
移动光标:
移动单词
- h 左移一字符
- l 右移一字符
- w/W 移动到下一单词的开头
- b/B 移动到上一单词的开头
- e/E 移动到光标所在单词的末尾
- W、B、E 命令操作的单词是以空白字符(空格、Tab)分隔的字串,比如字符串“str1-str2 str3-str4”,对 W、B、E 命令来说是两个单词,而对 w、b、e 命令来说则是四个单词。
移动行
- j 下移一行
- k 上移一行
- 0 移到当前行开头
- ^ 移到当前行的第一个非空字符
- $ 移到当前行末尾
- ) 移动到当前句子的末尾
- ( 移动到当前句子的开头段落
- } 移动当前段落的末尾
- { 移到当前段落的开头
移动屏幕
- H 移动到屏幕的第一行
- M 移动到屏幕的中间一行
- L 移动到屏幕的最后一行
移动页
- Ctrl-f 向前滚动一页
- Ctrl-b 向后滚动一页
- Ctrl-u 向前滚动半页
- Ctrl-d 向后滚动半页
- 文件 G 移动到文件末尾
- gg 移动到文件开头
- :0 移动到文件第一行
- :$ 移动到文件最后一行 0 为数字零(zero)
文本编辑:
- yw 复制当前单词从光标开始的部分
- yy 复制光标所在行的所有字符
- p 将最后一个删除或复制文本放在当前字符
- u 撤消更改
- Ctrl-R 重做更改
- x 向后删除一个字符
- X 向前删除一个字符
- dd 删除游标所在的那一整行(常用)
- d0 删除游标所在处,到该行的最前面一个字符
- d$ 删除游标所在处,到该行的最后一个字符
- d1G 删除光标所在到第一行的所有数据
- dG 删除光标所在到最后一行的所有数据
学习要点:
在进行vim ~/.bashrc 更该环境变量时非常高效。
注意:/etc/profile和~/.bashrc的区别
- bashrc与profile都用于保存用户的环境信息,bashrc用于交互式non-loginshell,而profile用于交互式login shell。
- /etc/profile,/etc/bashrc 是系统全局环境变量设定,~/.profile,~/.bashrc用户家目录下的私有环境变量设定。
- 更改/etc/profile 需要sudo,~/.bashrc不用。
export完环境变量后注意source ~/.bashrc 来激活变化。如果只是在bash shell命令行中export环境变量,则再次打开终端时则不会保存。
Ant
Ant 是一个 Apache 基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。
Ant 的构件文件是基于 XML 编写的,默认名称为 build.xml。ant 命令默认同一目录下的的 build.xml 文件。
基本用法:
<?xml version="1.0" encoding="big5">
定义xml版本,编码<project name="projectA" default="clean" basedir="." >
定义了工程名,默认方式为清除,如清楚某些文件,basedir为当前目录.- 设定全局变量 如:
<property name="date" value="2007.03.22">
这样下面的可以直接调用变量date. - 定义文件编译所需要的jar档.
<path id="1">
<fileset dir="路径" includes="*.jar"/>
</path> target 元素,它为 Ant 的基本执行单元,它可以包含一个或多个具体的任务。
<target name="targetB" depends="targetA" unless="amigo">
depends 属性用于描述 target 之间的依赖关系,若与多个 target 存在依赖关系时,需要以“,”间隔。
- basedir:project 基目录的绝对路径。
ant.file:buildfile 的绝对路径。
学习要点:
注意各命令之间的依赖关系以及文件构建的目录。
- 在完成了build 和 run的基础上,加入junit命令,首先在编译时导入junit包,然后同时编译Test类和被测试的类,同样,在run时也需要先导入junit包。
和标签中,都可以使用fileset, dirset, pathelement等子标签来指明jar/zip, classes目录等。它们之间的区别如下:
可以独立定义,并赋予id供其它或引用。不能独立定义,但可以通过ID引用。classpath主要用于编译和运行时,指定具体的类路径。path则类似于一个的路径变量。
- 在和标签中都可以使用子标签来指明要包含的类文件目录和jar/zip文件。有两个属性:location, path,这两个属性在一个pathelement标签中只能出现一个。它们的区别为:location是用于指明一个包含类文件的目录,或者一个jar/zip文件(注意:重点强调是一个!);而path则能指定多个目录或jar/zip文件,多个目录或jar/zip文件之间用”:”,或”;”。
<?xml version="1.0" encoding="UTF-8" ?>
<project name="helloworld" default="test" basedir=".."><property name="lib.path" value="lib"/><path id="compile.path"><fileset dir="${lib.path}"><include name="**/*.jar"/></fileset><pathelement path="bin/classes"/></path><path id="run.path"><path refid="compile.path" /><pathelement location="org" /></path><target name="clean"><delete dir="bin"/></target><target name="compile" depends="clean"><mkdir dir="bin/classes"/><javac srcdir="src" destdir="bin/classes" classpathref="compile.path" includeantruntime="false" /></target><target name="run" depends="compile"><java classname="helloworld"><classpath refid="run.path" /></java></target><target name="test" depends="clean, compile"><junit printsummary="true"><classpath refid="compile.path"/><test name="helloworldTest"/></junit></target>
</project>
JUnit
单元测试的目的: 测试当前所写的代码是否是正确的, 例如输入一组数据, 会输出期望的数据; 输入错误数据, 会产生错误异常等.
在单元测试中, 我们需要保证被测系统是独立的, 即当被测系统通过测试时, 那么它在任何环境下都是能够正常工作的. 编写单元测试时, 仅仅需要关注单个类就可以了.
用法:
- @Test (expected = Exception.class) 表示预期会抛出Exception.class 的异常
- @Ignore 含义是“某些方法尚未完成,暂不参与此次测试”。这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore注解删去,就可以进行正常的测试。
- @Test(timeout=100) 表示预期方法执行不会超过 100 毫秒,控制死循环
- @Before 表示该方法在每一个测试方法之前运行,可以使用该方法进行初始化之类的操作
- @After 表示该方法在每一个测试方法之后运行,可以使用该方法进行释放资源,回收内存之类的操作
- @BeforeClass 表示该方法只执行一次,并且在所有方法之前执行。一般可以使用该方法进行数据库连接操作,注意该注解运用在静态方法。
- @AfterClass 表示该方法只执行一次,并且在所有方法之后执行。一般可以使用该方法进行数据库连接关闭操作,注意该注解运用在静态方法。
public class HelloWorldTest {public HelloWorld helloworld = new HelloWorld( );@TestPublic void testHello() {helloworld.hello();assertEquals( "Hello World!" , helloworld.getStr() );}
}
注意:
如果没有在测试类中加入main函数,则需要在运行时加入
–ea org.junit.runner.JUnitCore
参数。
或者在测试类加入
public static void main(String[] args) {org.junit.runner.JUnitCore.main("helloworldTest");}
设置环境变量:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_91
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/opt/resources/junit-4.9.jar:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
JUnit FAQ
Sonar及Sonar Runner
Sonar 是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维
度检测代码质量。通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy 等等二十几种编程语言的代码质量管理与检测。
检测内容:
- 糟糕的复杂度分布
- 重复
- 缺乏单元测试
- 没有代码标准
- 没有代码标准
- 潜在的 bug
- 糟糕的设计(原文 Spaghetti Design,意大利面式设计)
Spaghetti Design
用法:
添加环境变量
export SONAR_HOME=/home/administrator/Downloads/sonar-3.7.4/bin/linux-x86-64
export SONAR_RUNNER_HOME=/home/administrator/Downloads/sonar-runner-2.4
export PATH=$SONAR_RUNNER_HOME/bin:$PATH
cd SONAR_HOME
./sonar.sh start //启动服务
./sonar.sh stop //停止服务
./sonar.sh restart //重启服务
访问http:\localhost:9000,如果显示 SonarQube 的项目管理界面,表示安装成功。
在项目源码的根目录下创建 sonar-project.properties 配置文件,其中 projectKey 是项目的唯一标识,不能重复;要修改的内容包括 sonar.projectKey,sonar.projectName,java-module.sonar.projectBaseDir 三项;
编写好sonar-project.properties 文件后,在 shell 里面进入含有 sonar-project.properties文件的目录,输入 sonar-runner,运行测试;
出现以上信息时,证明运行成功,打开http:\localhost:9000 查看对应项目的情况即可。
注意:每次使用完 Sonar,记得关闭,进入启动目录,./sonar.sh stop
[官方文档](http://docs.codehaus.org/display/SONAR/Analysis+Parameters)
总结:
- 用vi配置环境变量文件的方法。
- ant和junit是用java语言进行项目设计的高效工具,类似于c++语言的makefile和debug工具。
- SonarQube很强大可以对源码的质量进行检测,方便日后的开发和维护。
Vi,Java,Ant,Junit的自学报告相关推荐
- 软工实训:Vi,Java,Ant,Junit的自学报告
vi/vim的学习 对vi/vim的理解 vi/vim是用来写代码的一种工具,适用于命令行.在命令行中启用vi,更新已有代码或创建新的文件. 在调用了vi之后,命令行会变成暂时的"文本编辑器 ...
- 中级实训第一天的自学报告
目录[阅读时间:约10分钟] 中级实训第一天的自学报告 姓名:隐藏敏感信息 学号:隐藏敏感信息 一.Vi/Vim 二.Java 三.Ant 四.Junit [附加]五.SonarQube [附加]六. ...
- java自学报告_Vi,Java,Ant和Junit自学报告
vi自学报告 概述 vi 编辑器是所有 Unix 及 Linux 系统下最基本的编辑器,它直接以命令行窗口作为显示界面.vim是vi的升级版,完全兼容vi并提供了一些新的特性.因为vi.vim完全脱离 ...
- Java单元测试(Junit+Mock+代码覆盖率)
单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复.改进 ...
- Java程序设计基础项目总结报告
Java程序设计基础项目总结报告 20135313吴子怡 一.项目内容 运用所学Java知识,不调用Java类库,实现密码学相关算法的设计,并完成TDD测试,设计运行界面. 二.具体任务 1.要求实现 ...
- 20155328 《Java程序设计》 实验二(Java面向对象程序设计) 实验报告
20155328 <Java程序设计> 实验二(Java面向对象程序设计) 实验报告 单元测试 一.单元测试和TDD 编程时需理清思路,将编程需求等想好,再开始编.此部分可用伪代码实现. ...
- Java Ant 学习总结
Java_Ant详解 http://www.cnblogs.com/huozhicheng/archive/2010/04/08/2533199.html 1,什么是ant ant是构建工具 2,什么 ...
- 20145207《Java程序设计》实验二(Java面向对象程序设计)实验报告
<Java程序设计>实验二(Java面向对象程序设计)实验报告 目录 改变 Java面向对象程序设计实验要求 实验成果 课后思考 改变 看了下之前实验二的整体,很搞笑,大图+代码,没了.. ...
- 20165301陈潭飞2017-2018-2 20165301 实验三《Java面向对象程序设计》实验报告
2017-2018-2 20165301 实验三<Java面向对象程序设计>实验报告 一.敏捷开发与XP实践-1 实验要求: 在IDEA中使用工具(Code->Reformate C ...
最新文章
- 【Android Developers Training】 93. 创建一个空验证器
- 样条表示---Bezier样条曲线
- CSS知识点个人总结(不断更新)
- DIP原则、IoC以及DI
- CentOS多网卡重命名配置
- cron表达式在线测试
- python字符串操作总结_Python字符串的一些操作方法总结
- socket编程之回声服务器
- Javascript浏览器事件(上)
- labelImg 标签bug
- 人脸识别活体检测测试案例
- Mac 右键的一些方法
- 物联网和互联网之间,主要有什么关系?
- three 星空穿梭,常见的星空星星移动
- 技法(但请少用):为非活动窗口绘制活动的标题栏
- 专访|搜狐媒体UED设计总监李伟巍:如何做好UED设计
- GPA计算器beta1
- 递归方式实现打印一个整数的每一位
- 报告解读下载 | 12月《中国数据库行业分析报告》发布,精彩抢先看
- c语言中文件的只读属性,C/C++ 文件属性设置(隐藏、只读、加密等)(示例代码)
热门文章
- OSChina 周二乱弹 —— 怎么制作妹子面
- WIN7下创建ODBC数据源到SQL Server的新数据源
- 基于已有模型,训练新数据的方法
- 2017年3月历史文章汇总
- 整理Cocos2d-x 面试题解
- 石器时代服务器端支持WIN10,经典石器时代v9.0端(XP.WIN7)架设成功+客户端+架设录像...
- 目标检测中的数据增强:mosaic,mixup,cutout,cutmix
- 非负矩阵分解的矩阵求解
- 让IE浏览器支持HTML5标准的方法
- 2021-01-03 请教一下水卡校验算法