2014-01-16 21 views
2

我的模板如何使用Eclipse模板插入包聲明?

package ${enclosing_package}; 
${is:importStatic('org.junit.Assert.*')} 
${i:import(org.junit.Test)} 
public class ${primary_type_name} { 

    @Test 
    public void test() { 
     fail(); 
    } 
} 

我希望它產生什麼

package com.example; 

import static org.junit.Assert.*; 
import org.junit.Test; 

public class ExampleUTest { 

    @Test 
    public void test() { 
     fail(); 
    } 
} 

這實際生產(包聲明如下進口使編譯失敗)

import static org.junit.Assert.*; 
import org.junit.Test; 

package com.example; 

public class ExampleUTest { 

    @Test 
    public void test() { 
     fail(); 
    } 
} 

我在空白的java文件中使用這個模板。看起來模板總是會將導入語句放在文件的頂部,如果有包含聲明的話,它就在包聲明的下面,這是有道理的。

我猜我的模板不工作,因爲它不知道我在頂層線上做了一個包聲明,所以它就像其他任何代碼行一樣被處理,並把它放在下面

我該如何得到這個工作 - 是否存在一個顯式地執行包聲明的變量,或者有另一種方法嗎?

+0

我剛剛測試過,而且我也無法得到正確的順序。但你爲什麼需要這個?我總是使用Eclipse嚮導創建類。之後,你已經有了一個班級模板。然後,您可以添加一個JUnit 4測試方法,並鍵入「Test」並按 - 。該模板是內置的。 – Seelenvirtuose

+0

我想使用單個模板爲單元測試生成大量的樣板代碼,實際上我的模板將更加具體到我正在處理的項目 - 用於模擬框架,註釋和所有類型的導入的東西。由於Eclipse由於某種原因似乎無法讓您定義自定義的新類模板,因此我所做的是生成一個新類,全部刪除,然後運行它以生成單元測試的所有模板代碼。有明顯的手動解決方法,我的意思是,我可以自己將包聲明向上移動,但它似乎應該是完全可自動化的 – davnicwil

回答

0

Preferences > Java > Code Style > Code Templates中有一個單獨的組Code Templates,例如New Java files。新文件是Code部分,New Java files

+0

這將是解決方案,除非令人煩惱的是,Eclipse不允許您定義自定義代碼模板,例如單元測試。這太明智了。 – davnicwil

0

看來,您無法在單個代碼模板中同時創建「包」和「導入」模板。你可以做的是創建兩個單獨的模板,因爲導入和包都是兩個不同的上下文。