2012-10-24 173 views
1

我創建了一個包含物品的棋盤,並且這些物品是隨機創建的,用於某種類型的比賽3遊戲。有一些我想測試的情況。你能提出任何方法來測試隨機產生的案例嗎?測試隨機產生的案例

最佳

+0

不是沒有更多的信息。 – Thom

+0

我不確定我應該提供什麼樣的信息,但讓我舉一個我想要的例子。我需要製作新的項目,在棋盤上應該有可能發生的5次比賽。這是明確的還是我應該告訴你的? –

回答

0

對於含有隨機(例如數字)的測試場景,你需要一個RandomGenerator,在這裏你可以設置Seed。如果種子相同,生成的數字將始終相同,順序相同。對於您將Seed設置爲固定值的測試,對於真實應用程序,您將使用像System.getMilliSeconds()這樣的變量值。所以你可以檢查一個種子的測試結果的正確性,然後你可以隨意重複你的測試,如果結果改變了,但你的種子沒有找到錯誤案例。

+0

感謝您的回覆。種子會讓我產生相同的輸入,但我需要特定的輸入。例如,我需要製作新的項目,以便在棋盤中發生可能的5次匹配移動。它不僅僅是生成相同的輸入,而是生成相同的大小寫。我清楚了嗎? –

+0

是的,在相同的種子中,您將始終生成相同的「隨機」數字序列。所以你總是會得到相同的情況來評估。 – Simulant

+0

所以你所暗示的就我所理解的這樣的事情而言。給一個種子,看看生成的項目,根據這些項目生成你的董事會,這將使你的情況下有效。更換種子或董事會爲每個不同的情況。我對嗎? –

2

使用TestNG,您可以使用'參數化'測試,並通過任何數據提供者對它們進行種子處理: http://www.mkyong.com/unittest/testng-tutorial-6-parameterized-test/,例如,一個簡單的csv文件。

您可能希望從廣泛的可能輸入列表開始,然後找到一組輸入,這些輸入可以爲您提供受測試的課程的最高覆蓋率。

測試覆蓋率工具可以檢查在給定輸入的測試期間是否達到了您的代碼的每個可能的執行路徑。

也許這還不夠,但是對於提供特定輸出的可能輸入進行反向工程更多是人工智能引擎的一項任務。