1
在Rascal中,您可以通過在布爾函數上指定test
修飾符來定義測試函數。並通過在Rascal命令行輸入:test
來運行它們。詳見over here。Rascal單元測試框架是否支持測試夾具?
是否有可能指定測試夾具(對於測試套件)?例如setup()
和teardown()
功能?
在Rascal中,您可以通過在布爾函數上指定test
修飾符來定義測試函數。並通過在Rascal命令行輸入:test
來運行它們。詳見over here。Rascal單元測試框架是否支持測試夾具?
是否有可能指定測試夾具(對於測試套件)?例如setup()
和teardown()
功能?
您可以通過在模塊中的全局變量寫設置功能你寫的測試中:
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;
然後測試運行會產生大量的隨機輸入的用於測試功能的參數。您也可以通過一些標籤來影響輸入生成。讓我們知道你是否感興趣。
任何更多(在線)有關'@ memo'做什麼的信息?將週一詢問隨機測試支持標籤。 – Sander
我不認爲我們記錄@memo呢。但是知道的並不多。它所做的只是緩存一個函數的結果,當給定相同的參數時,它會從緩存中產生結果而不是重新計算。 Java GC需要更多內存時釋放緩存(嘗試並預測:-) – jurgenv
注意註釋,在決定平等時不考慮Rascal註釋。這也適用於'@memo',所以如果你的值只在註釋中有所不同,不要使用'@memo'因爲它會受到傷害。 –