2014-10-06 100 views
2

我的測試代碼使用Junit4 -

import static org.junit.Assert.assertEquals; 
import junitparams.Parameters; 
import org.junit.Test; 

public class FootballTeamTest { 

    @Test 
    @Parameters(method ="nbOfGamesWon") 
    public void constructorShouldSetGamesWon(int nbOfGamesWon) { 
     FootballTeam team = new FootballTeam(nbOfGamesWon); 
     assertEquals(nbOfGamesWon, team.getGamesWon()); 
    } 

    public Object[] nbOfGamesWon(){ 
     return $(0,1,2); 
    } 

} 

錯誤線return $(0,1,2); - The method $(int, int, int) is undefined for the type FootballTeamTest

我的書使用這種代碼沒有問題。爲什麼這個錯誤發生在我身上,我該如何解決它?

回答

0

簡而言之,您沒有一個名爲$的方法,其中有三個參數爲int。定義這樣的方法,你就可以調用它。

public Object[] $(int a, int b, int c) { 
    return new Object[0]; // or whatever initialization logic you need 
} 

Note that the JLS states

通過 「Java字母」 包括大寫和小寫ASCII拉丁字母AZ (\ u0041- \ u005a)和AZ(\ u0061- \ u007a),以及歷史 原因,ASCII下劃線(_,或\ u005f)和美元符號($,或 \ u0024)。 $符號應該僅用於機械產生 的源代碼,或者很少,對原有接入現有的預名稱 系統。

所以,也許你的書有一些。否則,請勿使用$作爲標識符名稱。

This junitparams library提供了一種名爲$的方法。你可能會錯過它。

import static junitparams.JUnitParamsRunner.$; 
+1

哦是的。杜!我會將編輯添加到您的代碼中。 'import static junitparams.JUnitParamsRunner。$;' – 2014-10-06 00:37:47

+0

@BoratSagdiyev這看起來不像是一個junit庫類。你確定這不是一個自定義類嗎? – 2014-10-06 00:42:28

+0

很久以後,我開始閱讀我的書。回去看看我提到的進口。我只使用'junit.jar版本4'和'org.hamcrest.core_1.3.0'。我不使用作者開發的任何自定義代碼。 – 2014-10-06 00:44:32