2013-11-20 174 views

回答

1

您可以通過在模塊中的全局變量寫設置功能你寫的測試中:

bool s = setup(); // is called 

int myGlobal1 = 2; 

bool setup() { 
    myGlobal1 = 1; 
} 

teardown與其說是必要的,因爲我們沒有在流氓多狀態比其他這些全局變量。

另一個,也許是更好的測試之間的共享狀態的方法是使用@memo功能:

@memo 
value getMyExampleData(int input) = ...; 

test bool myTest1() { 
    myData = getMyExampleData(1); 

    return /shouldContainThis x := myData; 
} 

test bool myTest2() { 
    myData = getMyExampleData(1); 

    return /shouldContainThisToo y := myData; 
} 

到getMyExampleData的第二個電話會非常快,因爲其結果是從緩存中獲取。如果JVM內存不足,則會自動清除緩存。

順便說一句,還存在用於隨機測試的一些支持,如:

test bool myTest(int i, int j) = i + j == j + i; 

然後測試運行會產生大量的隨機輸入的用於測試功能的參數。您也可以通過一些標籤來影響輸入生成。讓我們知道你是否感興趣。

+0

任何更多(在線)有關'@ memo'做什麼的信息?將週一詢問隨機測試支持標籤。 – Sander

+0

我不認爲我們記錄@memo呢。但是知道的並不多。它所做的只是緩存一個函數的結果,當給定相同的參數時,它會從緩存中產生結果而不是重新計算。 Java GC需要更多內存時釋放緩存(嘗試並預測:-) – jurgenv

+1

注意註釋,在決定平等時不考慮Rascal註釋。這也適用於'@memo',所以如果你的值只在註釋中有所不同,不要使用'@memo'因爲它會受到傷害。 –

相關問題