1. 程式人生 > >MyEclipse如何編寫JUnit測試類

MyEclipse如何編寫JUnit測試類

最近在看《敏捷軟體開發》,看到第31的有關於編寫測試類測試一個素數生成器的例子,特此動手實踐了下,發現了書中的一個小錯誤,同時在網上看到一個更好的測試方法。

版本一

//這是書上版本一
public class GeneratePrimes {
    public static int[] generatePrimes(int maxValue){
        if(maxValue >=2){
            int s = maxValue+1;
            boolean[] f = new boolean[s];
            int i;

            for
(i=0;i<s;i++){ f[i]=true; } f[0]=f[1]=false; int j; for(i=2;i<Math.sqrt(s)+1;i++){ for(j=2*i;j<s;j+=i) f[j] = false; } int count=0; for(i=0;i<s;i++){ if
(f[i]) count++; } int[] primes = new int[count]; for(i=0,j=0;i<s;i++){ if(f[i]) primes[j++]=i; } return primes; } else { return new int[0]; } } }

版本二

//這是書上版本二

public class PrimeGenerator {
    private static int s;//這裡書上是a,很明顯錯了
    private static boolean[] f;
    private static int[] primes;

    public static int[] generatePrimes(int maxValue){
        if(maxValue<2){
            return new int[0];
        }else{
            initializeSieve(maxValue);
            sieve();
            loadPrimes();
            return primes;
        }
    }


    private static void loadPrimes() {

        int i;
        int j;

        int count = 0;
        for(i=0;i<s;i++){
            if(f[i]){
                count++;
            }
        }

        primes = new int[count];

        for(i=0,j=0;i<s;i++){
            if(f[i]){
                primes[j++]=i;
            }
        }

    }

    private static void sieve() {

        int i;
        int j;
        for(i=2;i<Math.sqrt(s)+1;i++){
            if(f[i]){
                for(j=2*i;j<s;j+=i){
                    f[j]=false;
                }
            }
        }

    }

    private static void initializeSieve(int maxValue) {

        s=maxValue+1;
        f=new boolean[s];
        int i;

        for(i=0;i<s;i++){
            f[i]=true;
        }

        f[0]=f[1]=false;

    }
}

書上的測試類

測試類,書上的測試PrimeGenerator的,順著寫就好

import junit.framework.TestCase;
import junit.textui.TestRunner;

public class TestGeneratePrimes2 extends TestCase {

    public static void main(String[] args) {

        TestRunner.main(new String[]{"TestGeneratePrimes"});
    }

    public TestGeneratePrimes2(String name){
        super(name);
    }

    public void testPrimes(){
        int[] nullArray = PrimeGenerator.generatePrimes(0);
        assertEquals(nullArray.length, 0);

        int[] minArray = PrimeGenerator.generatePrimes(2);
        assertEquals(minArray.length, 1);
        assertEquals(minArray[0], 2);

        int[] threeArray = PrimeGenerator.generatePrimes(3);
        assertEquals(threeArray.length, 2);
        assertEquals(threeArray[0], 2);
        assertEquals(threeArray[1], 3);

        int[] centArray = PrimeGenerator.generatePrimes(100);
        assertEquals(centArray.length, 25);
        assertEquals(centArray[24], 97);


    }

}

我自己寫的測試類

測試類,我自己寫來測試GeneratePrimes的
這裡寫圖片描述

這裡寫圖片描述

import static org.junit.Assert.*;

import org.junit.Test;

public class TestGeneratePrimes {

    @Test
    public void test() {
        int[] nullArray = GeneratePrimes.generatePrimes(0);
        assertEquals(nullArray.length, 0);

        int[] minArray = GeneratePrimes.generatePrimes(2);
        assertEquals(minArray.length, 1);
        assertEquals(minArray[0], 2);

        int[] threeArray = GeneratePrimes.generatePrimes(3);
        assertEquals(threeArray.length, 2);
        assertEquals(threeArray[0], 2);
        assertEquals(threeArray[1], 3);

        int[] centArray = GeneratePrimes.generatePrimes(100);
        assertEquals(centArray.length, 25);
        assertEquals(centArray[24], 97);
    }

}

可以發現程式碼明顯少了很多。

或者這樣

import static org.junit.Assert.*;

import org.junit.Test;

public class TestGeneratePrimes {

    @Test
    public void testNull() {
        int[] nullArray = GeneratePrimes.generatePrimes(0);
        assertEquals(nullArray.length, 0);
    }

    @Test
    public void testMin(){
        int[] minArray = GeneratePrimes.generatePrimes(2);
        assertEquals(minArray.length, 1);
        assertEquals(minArray[0], 2);
    }

    @Test
    public void testThree(){
        int[] threeArray = GeneratePrimes.generatePrimes(3);
        assertEquals(threeArray.length, 2);
        assertEquals(threeArray[0], 2);
        assertEquals(threeArray[1], 3);
    }

    @Test
    public void testCent(){
        int[] centArray = GeneratePrimes.generatePrimes(100);
        assertEquals(centArray.length, 25);
        assertEquals(centArray[24], 97);
    }
}

這裡寫圖片描述

測試結果看著也很清爽。

就是醬紫。

相關推薦

MyEclipse如何編寫JUnit測試

最近在看《敏捷軟體開發》,看到第31的有關於編寫測試類測試一個素數生成器的例子,特此動手實踐了下,發現了書中的一個小錯誤,同時在網上看到一個更好的測試方法。 版本一 //這是書上版本一 public class GeneratePrimes {

myeclipse中用Junit測試方法報錯

nbsp lips es2017 測試方法 報錯 images myeclipse junit ima 原因是在測試方法的上面沒有寫註解 @Test myeclipse中用Junit測試方法報錯

Junit測試中如何調用Http通信

soft size framework pan font auto 測試 mock unit 在使用Junit做測試的時候,有時候需要調用Http通信,無論是request還是response或者是session會話,那麽在測試類裏該如何調用呢,其實很簡單,spring給我

junit測試測試多線程遇到的問題

強制 多線程 pri println false cep 測試類 ted over @Test public void testSychronized() throws InterruptedException { Thread t1 =

SpringBoot工程Junit測試案例

@SpringBootTest @RunWith(SpringRunner.class) public class MongoDBTest2 { @Autowired MongoTemplate template; // @Test public void save

spring-boot 整合junit測試 和 spring-boot整合整合testng

一、spring-boot 整合junit測試類 1.引入junit依賴 <!-- springboot junit依賴 --> <dependency> <groupId>org.springframework.boot

JUnit測試建立request,response物件

程式碼以request為例JUnit測試類,程式碼如下://引入mock包 import org.springframework.mock.web.MockHttpServletRequest; //測試類 public class TaskFlowControllerTe

建立JUNIT測試

建立JUNIT測試類步驟: 1 建立正常的JAVA工程 2  在JAVA工程的build path 的LIB中匯入JUNIT4 3 工程中新建一個普通TEST.JAVA,在該類中在隨便的一個方法上,反正不是構造方法上,添加註釋@TEST 4 在左邊樹種右鍵    執行JUN

Junit測試常用的幾個方法

package com.java.test; import junit.framework.Assert; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; impor

如何編寫Junit測試程式碼

package com.snt.aaa.config.service.impl; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans

基於junit的單元測試編寫

frame eos set new common cep resource build gson 首先定義抽象類BaseTest package com.geostar.gfstack.operationcenter.common.util; import co

MyEclipse 下用Junit建立測試

1>專案-------->右鍵-------->source folde       建立一個資料夾,目錄名最好為test; 2>右鍵點選新建立的test資料夾,建立一個包,包名要和你所測試的類的包名一致; 3>在包下建立測試類,類名最好是**

Java編寫儲蓄賬戶測試,模擬存款

   編寫儲蓄賬戶類及測試類,模擬存款,參考以下執行方式:(剛開始學,程式碼簡陋,望大神指點) (1)新開5個儲蓄賬戶,各儲蓄賬戶的編號、戶名在新開儲蓄賬戶時初始化,假設每位使用者新開儲蓄賬戶時都存入了一筆錢。 (2)提示使用者從鍵盤輸入儲蓄賬戶編號。 (3)若輸入的

Controller 層編寫測試

前後端分離以後,Controller 部分的程式碼當然也要進行測試,但是往常我們的測試類無法傳送http請求,這時就需要用到 MockMvc, 一個簡單的例子: 測試類: @RunWith(SpringRunner.class) @SpringBootTest public class

簡單粗暴——Spring boot測試編寫

Spring boot 測試類,入手即用!!! package cn.com.sinosoft.web.test; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith;

Junit核心——測試(TestCase)、測試集(TestSuite)、測試執行器(TestRunner)

首先,把這三個定義簡單的說明一下: 1、測試類(TestCase):一個包含一個或是多個測試的類,在Junit中就是指的是包含那些帶有@Test註解的方法的類,同一樣也被稱作“測試用例”; 2、測試集(TestSuite):測試集是把多個相關測試歸入一個組的表達方式,在Ju

面向物件手機編寫和手機測試 以及物件的記憶體圖

Phone.java /* * 手機類 */ public class Phone { String brand; int price; String color; public void call(String name) { Syste

面向物件手機編寫和手機測試

Phone.java /* * 手機類: * 成員變數:品牌 價格 顏色 * * 成員方法: 打電話 發簡訊... */ public class Phone { //成員屬性 String brand;//品牌 int p

編寫一個手機(Mobile),包括手機品牌(brand)、手機型號(type), 方法包括顯示手機資訊,並編寫測試進行物件的建立

/*編寫一個手機類(Mobile),包括手機品牌(brand)、手機型號(type), * 方法包括顯示手機資訊,並編寫測試類進行物件的建立*/package cyff;public class Mobile {// 定義Mobile類String brand, type

JUnit自動化單元測試(一):生成測試

廢話不多說,直接上步驟。 第一步:匯入Junit4包到專案中。 可以自己到網上下載junit4 jar包,也可以用JDE自帶junit測試工具包。以Eclipse為例 第二步,建立測試類。 現有Calcuate類,要測試其加減乘除四個方法,在