差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

java:junit4:rules:temporaryfolder [2020/05/02 22:57]
tony
java:junit4:rules:temporaryfolder [2023/06/25 09:48]
行 1: 行 1:
-{{tag>​junit4 junit4_rules}} 
-====== JUnit4 : TemporaryFolder Rule ====== 
-===== Problem ===== 
-撰寫測試免不了會需要產生暫存檔案或資料夾,而在測試結束時,我們往往會透過@After或@AfterClass去刪除這些檔案:​ 
-<code java> 
-public class TestTemporaryFolder { 
- private File testFile = new File("​./​test"​);​ 
-  
- @After 
- public void teardown() { 
- testFile.delete();​ 
- } 
-  
- @Test 
- public void test() { 
- // do test with testFile 
- testFile.mkdir();​ 
- } 
-  
-} 
-</​code>​ 
-但會產生很多測試檔案,又或者是在測試中間才會產生測試檔案,這都會讓你的teardown變得麻煩。本篇文章要分享JUnit4的TemporaryFolder,讓你可以不需要在member宣告一堆檔案變數與控制其生命週期,就可以把這些暫存資料砍光光。 
-===== How to? ===== 
-寫法相當簡單,只要在member宣告一個TemporaryFolder的@Rule變數,接著在測試中直接用這變數來產生檔案或資料夾即可:​ 
-<code java> 
-public class TestTemporaryFolder { 
-  
- @Rule 
- public TemporaryFolder temporaryFolder = new TemporaryFolder();​ 
  
- @Test 
- public void useTemporaryFolder() throws Exception { 
- System.out.println(temporaryFolder.newFolder("​test"​).getAbsolutePath());​ 
- System.out.println(temporaryFolder.newFolder("​test.txt"​).getAbsolutePath());​ 
- } 
-} 
-</​code>​ 
-透過我的範例程式碼,可以發現預設情況下會將檔案產生到java.io.tmpdir變數中所對應的位置。在debug的時候,我不希望把這些檔案砍掉,那我該怎麼做?​ override delete method,讓它不做動作就好:​ 
-<code java> 
-@Rule 
-public TemporaryFolder temporaryFolder = new TemporaryFolder() { 
- public void delete() { 
-  
- } 
-}; 
-</​code>​ 
- 
-=====    ===== 
----- 
-\\ 
-~~DISQUS~~