Java Web學習筆記(2015/7/13)

一、maven 命令行運行java應用程序
clean compile exec:java -Dexec.mainClass="com.wcy.App" 從包路徑開始一直寫到需要運行的類名,不需要加.class

二、hamcrest作用:
增強junit的測試能力,用一些相對通俗的語言來進行測試,如:

<!-- maven添加依賴,如果是手工導入,需將其jar包放置在junit的jar之前-->
<dependency>
        <groupId>org.hamcrest</groupId>
        <artifactId>hamcrest-all</artifactId>
        <version>1.3</version>
</dependency>
//靜態導入文件
import static org.hamcrest.Matchers.*;
//判斷50是否大於六十,並且小於20
Assert.assertThat(50, allOf(greaterThan(60), lessThan(20)));

三、testSuite作用
將多個類組成一個測試組件,運行testSuite,將執行多個test文件

package com.wcy;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;

//表示這個類是一個suite類
@RunWith(Suite.class)
//說明這個類中包含的測試組件
@SuiteClasses({TestA.class,
            TestB.class,
            TestHello.class})

public class TestSuite {

}

四、測試原則:
每一個測試類均可以獨立運行,測試類中每一個測試方法之間沒有依賴關係
測試類的包與需要測試的類的包名一致

五、學習新知識方法
如junit,搜索junit in action 英文版的,中文的則爲 junit實戰

六、cobertura
測試你測試代碼的覆蓋率,還可顯示各個類的哪個分支沒有被測試(摘自http://blog.csdn.net/kongxx/article/details/7757571)

首先修改工程的pom.xml文件,添加cobertura-maven-plugin插件,如下:

<project>  
    ...  
    <reporting>  
        <plugins>  
            <plugin>  
                <groupId>org.codehaus.mojo</groupId>  
                <artifactId>cobertura-maven-plugin</artifactId>  
                <version>2.5.1</version>  
            </plugin>  
        </plugins>  
    </reporting>  
    ...  
</project>  

運行“mvn cobertura:help”, 如果不能運行,請添加以下倉庫

<project>  
    ...  
    <pluginRepositories>  
        <pluginRepository>  
            <id>Codehaus repository</id>  
            <url>http://repository.codehaus.org/</url>  
        </pluginRepository>  
    </pluginRepositories>  
    ...  
</project>  

我是直接都添加了
下面是cobertura插件的命令

mvn cobertura:help 查看cobertura插件的幫助
mvn cobertura:clean 清空cobertura插件運行結果
mvn cobertura:check 運行cobertura的檢查任務
mvn cobertura:cobertura 運行cobertura的檢查任務並生成報表,報表生成在target/site/cobertura目錄下的index.html文件中
cobertura:dump-datafile Cobertura Datafile Dump Mojo
mvn cobertura:instrument Instrument the compiled classes

七、安裝完mysql後,爲root 創建密碼(win 7 cmd可用)
mysqladmin -u root flush-privileges password “newpwd”
修改root密碼
mysqladmin -u用戶名 -p password 新密碼
然後輸入舊密碼即可
應該還有別的方法,不需要在命令行中輸入新密碼,這樣太不安全了,暫時想不起來了。。。

八、mysql顯示錶中的列信息
desc 表名

九、mysql使用外部文件創建表
通過source init.sql 文件絕對路徑(cmd 使用/分隔)創建表
init.sql 文件內容

create table if not exists t_user(
    id int(10) primary key auto_increment,
    username varchar(200),
    password varchar(200),
    nickname varchar(200)
)auto_increment=1

十、使eclipse使用本機上安裝好的Maven,使軟件的版本在自己可以控制的範圍內
eclipse:Window–>Preference–>Maven–>Installations–>Add指定本機上安裝好的Maven文件夾

十一、stub思想:
例如測試service時需要調用dao操作數據庫,可以使用map或者其他東西模擬dao對數據庫的操作,從而達到保護數據和測試代碼的目的。

十二、dbunit
1、導入文件

<!-- 使用dbunit -->    
    <dependency>
        <groupId>org.dbunit</groupId>
        <artifactId>dbunit</artifactId>
        <version>2.5.1</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.6.1</version>
    </dependency>

2、測試數據文件t_user.xml,內含兩種編寫方式

<?xml version="1.0" encoding="UTF-8"?>

<dataset>
    <!-- <t_user>
        <id>1</id>
        <username>wcy</username>
        <password>wcy</password>
        <nickname>wcy</nickname>
    </t_user> -->
    <t_user id="1" username="wcy" password="wcy" nickname="wcy"></t_user>
</dataset>

3、創建dbunit connection
依賴於項目中所使用的connection

4、創建IDataSet,通過DataSet來獲取測試數據中的數據
FlatXmlDataSet用來獲取基於屬性存儲的屬性值
XMLDataSet用來獲取基於節點類型存儲的屬性值

IDatabaseConnection conn = new DatabaseConnection(DbUtil.getConnection());
            IDataSet ds = new FlatXmlDataSet(
                    new FlatXmlProducer(
                    new InputSource(
                    TestDbunit.class.getClassLoader().getResourceAsStream("t_user.xml"))));//可以選中代碼,右鍵surround with添加try/catch

十三、win7 mysql數據庫顯示中文
不知道爲什麼配置文件怎麼改都不好使,最後在創建數據庫的時候指定編碼

CREATE DATABASE 數據庫名 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

jdbc訪問數據庫時也指定編碼

DriverManager.getConnection("jdbc:mysql://localhost:3306/junit?useUnicode=true&characterEncoding=utf8",
                "root","password");

唉,先這麼妥協了。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章