【2020中大中级实训】Part1:vi,java,ant 和Junit 的自学报告

这篇博客是关于中大中级实训的第一部分,作者分享了学习vi,java,ant和Junit的过程。在vim部分,介绍了安装和基本指令;在java部分,讲解了JDK安装、HelloWorld程序和calculator小程序的编写;接着是ant的安装与使用,包括build.xml的编写;Junit部分涵盖了安装、环境变量配置和使用测试;最后简述了如何使用ant管理和测试Java程序,并提及了SonarQube的初步配置。" 111347622,10325144,电子元器件失效分析:极限应力与反向分析技术,"['集成电路反向分析技术', '元器件设计', '极限应力', '电路保护']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【中大中级实训】Part1:vi,java,ant 和Junit 的自学报告


vim学习

vim安装

sudo apt-get install vim-gtk

vim指令学习

vim有命令模式,命令模式下有很多指令,用来方便我们来编辑代码,进行保存退出,插入删除等。以下是常用的指令表格:

命令作用
i在光标之前插入
:q退出
:w保存
:wq保存并退出
dd删除光标所在行
u撤销操作
gg跳到第一行
G跳到最后一行

java 学习

jdk安装

安装,终端Terminal下敲下命令:

sudo apt-get install default-jdk

配置检查,终端Terminal敲下命令:

java -version

如果看到java的版本信息则已经安装完成。

java:HelloWorld. java

新建helloworld.java代码文件:

public class helloworld {
  public static void main(String args[]) {
    System.out.println("Hello world!");
  }
}

helloworld的编译运行,终端Terminal敲下命令:

javac helloworld.java
java helloworld

java小程序: calculator.java

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.*;
import java.awt.GridLayout;
import java.awt.event.*;


public class calculator extends JFrame{
    private JLabel op1 = new JLabel("",JTextField.CENTER);
    private JTextField num1 = new JTextField("12");
    private JTextField num2 = new JTextField("2");
    private JLabel op3 = new JLabel("",JTextField.CENTER);
    
    public calculator(){
        JFrame frame = new JFrame("Mycalculator");
        frame.setLayout(new GridLayout(2,5,5,5));
        //num1,num2 are the operands
        num1.setHorizontalAlignment(JTextField.CENTER);
        num2.setHorizontalAlignment(JTextField.CENTER);
        JLabel op2 = new JLabel("=",JTextField.CENTER);
        frame.add(num1);
        frame.add(op1);
        frame.add(num2);
        frame.add(op2);
        frame.add(op3);
        
        //bu1~bu4 are the operators,bu5 is the equal operator
        JButton bu1 = new JButton("+");
        JButton bu2 = new JButton("-");
        JButton bu3 = new JButton("*");
        JButton bu4 = new JButton("/");
        JButton bu5 = new JButton("OK");
        
        frame.add(bu1);
        frame.add(bu2);
        frame.add(bu3);
        frame.add(bu4);
        frame.add(bu5);
        
        //calculate part, add listener
        bu1.addActionListener(new OperationButtonListener());
        bu2.addActionListener(new OperationButtonListener());
        bu3.addActionListener(new OperationButtonListener());
        bu4.addActionListener(new OperationButtonListener());
        bu5.addActionListener(new EqualButtonListener());
        //set the attribute of frame
        int width = 200;
        int length = 400;
        frame.setSize(length, width);
        frame.setLocationRelativeTo(null);          //set the frame to middle
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }
    //+-x/,operators' listener
    private class OperationButtonListener implements ActionListener{
        public void actionPerformed(ActionEvent e){
            JButton temp = (JButton)e.getSource();
            op1.setText(temp.getLabel());
        }
    }
    //=, equal listener
     private class EqualButtonListener implements ActionListener{
        public void actionPerformed(ActionEvent e){
            try{
                //get two numbers
                double number1 = Double.parseDouble(num1.getText());
                double number2 = Double.parseDouble(num2.getText());
                
                if(op1.getText().equals("+")){
                    op3.setText(number1+number2+"");
                }
                else if(op1.getText().equals("-")){
                    op3.setText(number1-number2+"");
                }
                else if(op1.getText().equals("*")){
                    op3.setText(number1*number2+"");
                }
                else if(op1.getText().equals("/")){
                    op3.setText(number1/number2+"");
                }
            }
            //show the wrong details
            catch(Exception err){
                op3.setText("Wrong!");
            }
        }
    }
    
    public static void main(String[] args){
        //run the calculator
        new calculator();
    }
}


ant学习

ant安装

安装下载,终端Terminal下:

sudo apt-get install ant

检查安装、配置是否成功,终端Terminal下:

ant

如果显示以下信息,则表明已安装 ant。

build.xml does not exist!
Build failed

ant使用

以简单的helloworld为例子。
我们创建的helloworld项目的文件结构如图:
ant1
使用ant进行管理,我们要在项目内创建一个build.xml文件,这里我们创建在项目根目录下。build.xml代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<project name="HelloWorld" default="run" basedir=".">      	
  <property name="src" value="src"/>
  <property name="classes" value="classes"/>
  <property name="lib" value="lib"/>
  
  <target name="init">
    <mkdir dir="${classes}"/>
    <mkdir dir="${lib}"/>
   </target>
  
  <target name="clean">
      <delete dir="${classes}"/>
      <delete dir="${lib}"/>  
  </target>
  
  <target name="jar" depends="compile">
      <jar jarfile="${lib}/helloworld.jar">      
      <fileset dir="${classes}"/>      
        <manifest>    
          <attribute name="Main-class" value="helloworld"/>      
        </manifest>   
      </jar>  
    </target>
  
  <target name="compile" depends="init">    
      <javac srcdir="${src}" destdir="${classes}">     <include name="helloworld.java"/>    
      </javac>  
  </target>
  
  <target name="run" depends="compile">
      <java classname="helloworld" classpath="${classes}"/>  
  </target>
  
  <target name="test">
      <javac srcdir="${src}" destdir="${classes}">
          <include name="HelloWorldTest.java"/>      
          <include name="HelloWorld.java"/>    
      </javac>    
      <java  classname="org.junit.runner.JUnitCore" >    
      <arg value="HelloWorldTest"/>    
      <classpath>        
          <pathelement path="${classes}"/>        
          <pathelement path="${src}/junit-4.9.jar"/>    
      </classpath>    
      </java>  
   </target>
</project> 

一些常用的xml标签:

  • property是设置目录地址,用来后文方便写路径。
  • target 是ant 的每一个命令, 有命令名,target里面是写对于ant命令的实现。
  • ant init命令是对文件结构的初始化,创建classes和lib文件夹目录。
  • ant clean命令是清除部署,删除classes和lib文件夹。
  • ant compile命令是编译操作,依赖于init操作,用来编译src文件夹里的helloworld.java,并将生成的helloworld.class放进classes文件夹内。
  • ant run命令是运行helloworld.class文件操作,依赖于compile编译操作。
  • ant jar命令是打包操作,依赖于compile编译操作,将生成的jar包放入lib文件夹目录。
  • ant test命令是测试命令。

ant 编译运行java文件,在终端Terminal下:

ant run

Junit学习

Junit安装

从Junit官方下载网站https://github.com/KentBeck/junit/downloads上下载。

Junit环境变量配置

在终端下:

gedit ~/.bashrc

在文件末尾添加

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_91
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/home/adminstrator/Downloads/junit-4.9.jar:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
  • 其中第一行JAVA_HOME的配置,指向自己的jdk文件,包管理安装的jdk,文件目录默认在/usr/lib/jvm中
  • 第二行代码中的 /home/adminstrator/Downloads/junit-4.9.jar 要指向自己放置的junit-4.9.jar包,路径要写对。
  • 添加完后,保存并退出

终端下添加下面这一句,使配置生效:

source ~/.bashrc

Junit的使用

以 helloworld.java 的 Junit 测试为例子。
在 src 文件夹下,重写helloworld.java文件:

public class HelloWorld {
    
    public void main() {
        System.out.println(helloWorld());
    }
    
    public static String helloWorld() {
        return "Hello World!";
    }

}

新建测试文件helloworldTest.java

import static org.junit.Assert;
import org.junit.Test;

public class TestHelloWorld {
    
    @Test public void helloWorldNormal() {
        String result = HelloWorld.helloWorld();
        Assert.assertEquals("Hello World!", result);
    }

}

先把junit-4.9.jar放进src文件夹内,然后在终端下:

 javac -classpath .:../../junit-4.9.jar HelloWorldTest.java 
 java -classpath .:../../junit-4.9.jar -ea org.junit.runner.JUnitCore HelloWorldTest

Junit1
如图显示即为成功。


ant管理Junit来测试helloworld

在build.xml添加如下ant test命令:

<target name="test">
    <javac srcdir="${src}" destdir="${classes}">
      <include name="HelloWorldTest.java"/>
      <include name="HelloWorld.java"/>
    </javac>
    <java  classname="org.junit.runner.JUnitCore" >
    <arg value="HelloWorldTest"/>
    <classpath>
        <pathelement path="${classes}"/>
        <pathelement path="${src}/junit-4.9.jar"/>
    </classpath>
    </java>
  </target>
  • 其作用就是利用ant来实现测试,不用在终端命令行敲下太多而只用ant test即可代替。

SonarQube学习

SonarQube是一个用于代码质量管理的开源平台,用于管理源代码的质量。
下面简单谈谈SonarQube的配置。

  1. 已安装Java环境
  2. 安装sonar和sonar-runner:将zip包解压。
  3. 设置 SONAR_HOME,SONAR_RUNNER_HOME 环境变量,并将 SONAR_RUNNER_HOME 加入 PATH 。

具体操作:
终端:

gedit ~/.bashrc

添加下面几条命令:

 export SONAR_HOME=.../sonar-3.7.4/bin/linux-x86-64(…表示路径名) 
 export SONAR_RUNNER_HOME=.../sonar-runner-2.4
 export PATH=$SONAR_RUUNER_HOME/BIN:$PATH

最后保存退出,在终端输入:

source ~/.bashrc
  1. 启动服务,在shell里输入 :
  cd $SONAR_HOME 
 ./sonar.sh start 启动服务 
 ./sonar.sh stop 停止服务 
 ./sonar.sh restart 重启服务
  1. 使用SonarQube Runner分析源代码
  • 首先启动服务,然后在项目中创建 sonar-project.properties 配置文件,终端进入含该文件的目录下输入sonar-runner,打开localhost:9000查看即可。
  • 注意每次使用完sonar记得关闭,进入启动目录,./sonar.sh stop
  1. java项目的project.properties 配置文件如下所示
#required metadata
#projectKey项目的唯一标识,不能重复
sonar.projectKey=myproject
sonar.projectName=myproject
sonar.projectVersion=1.0 
sonar.sourceEncoding=UTF-8
sonar.modules=java-module,javascript-module,html-module

# Java module
java-module.sonar.projectName=Java Module
java-module.sonar.language=java
# .表示projectBaseDir指定的目录
java-module.sonar.sources=.
java-module.sonar.projectBaseDir=src
sonar.binaries=classes
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值