1
無論何時測試函數(包含test
註解的函數)包含失敗的斷言,斷言與拋出異常時的效果相同:將不會執行該函數中的其他代碼行。因此,在用'test'註釋的函數中斷言語句就像普通的Ceylon函數中的普通斷言語句一樣工作。這runs contrary to the documentation,它聲明普通的斷言語句可以用於進行單元測試。ceylon.test.TestRunner在測試失敗時失敗
因此,運行下面的代碼,我能看到的聲明myTests1
但不'myTests2`:
import ceylon.test {
test, TestRunner, createTestRunner
}
test
Anything myTests1() {
// assert something true!
assert(40 + 2 == 42);
print("myTests1");
return null;
}
test
void myTests2() {
// assert something false!
assert(2 + 2 == 54);
print("myTests2");
}
"Run the module `tests`."
shared void run() {
print("reached run function");
TestRunner myTestRunner = createTestRunner(
[`function myTests1`, `function myTests2`]);
myTestRunner.run();
}
這是實際的輸出:
"C:\Program Files\Java\jdk1.8.0_121\bin\java" -Dceylon.system.repo=C:\Users\Jon\.IdeaIC2017.2\config\plugins\CeylonIDEA\classes\embeddedDist\repo "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.2.1\lib\idea_rt.jar=56393:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.2.1\bin" -Dfile.encoding=windows-1252 -classpath C:\Users\Jon\.IdeaIC2017.2\config\plugins\CeylonIDEA\classes\embeddedDist\lib\ceylon-bootstrap.jar com.redhat.ceylon.launcher.Bootstrap run --run run tests/1.0.0
reached run function
myTests1
Process finished with exit code 0
謝謝:) 所以'測試'註釋函數是單元測試的'最小單元'。 爲了在一個整齊的組中捆綁幾個單元測試,我應該使用eg。類。 – loldrup
是或頂層對象。也可以繼承測試方法 - 例如,抽象超類可以聲明'形式'值並定義一個使用這些值的測試函數,並且從它派生的對象可以定義這些值並繼承測試函數。 –