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類,要測試其加減乘除四個方法,在