溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么使用JMUnit

發(fā)布時間:2021-12-31 10:06:08 來源:億速云 閱讀:137 作者:iii 欄目:編程語言

本篇內(nèi)容介紹了“怎么使用JMUnit”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

使用JMUnit

a) 建立JMUnit

在下載JMUnit后,請確保相應(yīng)的兩個JMUnit .jar文件(JMUnit4CLDC10.jar和JMUnit4CLDC11.jar)可用于classpath中。注意,這個參數(shù)既針對你的Java ME編譯器也針對運行時刻環(huán)境或IDE。當(dāng)前,JMUnit的發(fā)行版本是1.0.2。

b) JMUnit測試用例

JMUnit提供了兩個版本的框架(每個版本都位于各自的JAR內(nèi));一個用于CLDC 1.0應(yīng)用程序,另一個用于CLDC 1.1應(yīng)用程序(其中,支持浮點原型)。按照典型的JUnit慣例,使用JMUnit創(chuàng)建適當(dāng)?shù)膯卧獪y試的第一步是創(chuàng)建一個測試用例。為了在JMUnit中創(chuàng)建一個測試用例,你必須創(chuàng)建一個新的派生自JMUnit的jmunit.framework.cldc10.TestCase或jmunit.framework.cldc11.TestCase的測試用例類。正如其包名所暗示的,一個支持1.0版本的CLDC,另一個支持1.1版本的CLDC。唯一的區(qū)別是,在assertEquals()和assertNotEquals()方法(見下面)的cldc11.TestCase實現(xiàn)中支持Java浮點原型。

按照J(rèn)Unit習(xí)慣,一個測試用例類應(yīng)該包含要測試的類名,并且以"Test"結(jié)束。因此,一個測試上面這個溫度轉(zhuǎn)換類的簡單的CLDC 1.1版本的JMUnit測試用例可以按如下方式定義:

public class TemperatureConversionTest extends jmunit.framework.cldc11.TestCase {}

所有的測試方法必須位于一個測試用例類之內(nèi)。而且,按照慣例,測試方法名都以"test"開頭,然后根據(jù)被測試的類中的方法進(jìn)行命名。例如,一個測試fahrenheitToCelsius方法的測試用例方法應(yīng)該為testfahrenheitToCelsius。每一個測試方法必須"斷言"期望的結(jié)果。對于那些不熟悉JUnit測試的開發(fā)者來說,一個斷言其實就是一個語句,它負(fù)責(zé)驗證或證明從某個方法執(zhí)行中程序員所期望的結(jié)果。JMUnit支持下列斷言:

assertTrue(expression)

assertFalse(expression)

assertSame(expected,actual)

assertNotSame(expected,actual)

assertEquals(expected,actual)

assertNotEquals(expected,actual)

assertNull(object)

assertNotNull(object)

在JMUnit中,任何使用這些斷言調(diào)用之一的測試方法都必須拋出一個AssertionFailedException異常。框架使用該異常來標(biāo)識失敗的測試?,F(xiàn)在,這個添加了適當(dāng)測試方法的TemperatureConversionTest類看起來如下所示。

import jmunit.framework.cldc11.*;

public class TemperatureConversionTest extends TestCase {

 public void testfahrenheitToCelsius() throws AssertionFailedException{

System.out.println("fahrenheitToCelsius");

float result = TemperatureConversion.fahrenheitToCelsius(66F);

assertEquals(18.88889F,result);

 }

 public void testcelsiusToFahrenheit() throws AssertionFailedException{

System.out.println("celsiusToFahrenheit");

float result = TemperatureConversion.celsiusToFahrenheit(20F);

assertEquals(68F, result);

 }

 public void testisHotter() throws AssertionFailedException {

System.out.println("isHotter");

assertTrue(TemperatureConversion.isHotter(70F,2F));

 }

 public void testisCooler() throws AssertionFailedException {

System.out.println("isCooler");

assertTrue(TemperatureConversion.isCooler(10F,10F));

 }

}

對于每一個標(biāo)準(zhǔn)的JUnit實現(xiàn),JMUnit測試用例抽象類都提供了setup()和tearDown()方法,這兩個方法都能夠被重載并用于初始化,并在經(jīng)由測試用例運行測試前后用來清除任何對象或資源。例如,在Java ME應(yīng)用程序中,setup()可以用于在測試前打開一個記錄存儲,而tearDown()用于在測試后關(guān)閉記錄存儲。除了setup和tearDown方法外,還有一個fail()方法用于實現(xiàn)-無論assert語句顯示什么內(nèi)容,都允許一個測試方法返回一個測試失敗。這個方法經(jīng)常用于一個測試方法內(nèi)的某些條件中,或用于作為未開發(fā)的單元測試的一個代理,從而作為一種方式來指示尚待完成的工作。

JMUnit中的每一個測試用例類都有一個相應(yīng)的構(gòu)造器。因此,派生自JMUnit的測試用例類的構(gòu)造器必須調(diào)用超類構(gòu)造器,并傳入一個整數(shù)以指示在該測試用例中的測試個數(shù),還要傳入一個字符串來標(biāo)識該測試用例。

public TemperatureConversionTest() {

 super(4,"TemperatureConversionTest");

}

這個整數(shù)指示測試的個數(shù)必須匹配測試用例中的實際測試的數(shù)目。確保你傳入構(gòu)造器的測試的個數(shù)匹配測試用例中的實際的測試的個數(shù)是相當(dāng)重要的。當(dāng)你分析該測試用例的test(int testNumber)方法,就會看到它們之間的關(guān)系。

測試用例中的這個test(int testNumber)方法負(fù)責(zé)"剔除"測試方法。因為Java ME缺乏映射能力,所以不能象在JUnit中一樣,找到test方法并自動地執(zhí)行之。因此,每一個測試方法必須被添加到該test方法中的一個switch語句中,并且基于一個測試號進(jìn)行相應(yīng)的調(diào)用。在我們的TemperatureConversionTest情況下,這個test方法看起來如下列代碼所示:

public void test(int testNumber) throws Throwable {

 switch(testNumber) {

case 0:testfahrenheitToCelsius();break;

case 1:testcelsiusToFahrenheit();break;

case 2:testisHotter();break;

case 3:testisCooler();break;

default: break;

 }

}

這也正解釋了為什么你必須向測試用例構(gòu)造器提供一個測試號。在運行時刻,JMUnit框架創(chuàng)建一個測試用例類的實例。然后,框架在一個循環(huán)內(nèi)調(diào)用該測試用例實例的每一個測試方法。通過這種方式,測試方法的switch語句中的每一個case語句(以及相應(yīng)的每一個測試)都會被框架所調(diào)用。當(dāng)把一個測試方法添加到測試用例中時,如果忘記更新測試用例類的構(gòu)造器可能會導(dǎo)致部分測試用例不被激活。

“怎么使用JMUnit”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI