2015-03-19 29 views
1

我有一個REST API測試套件,其中反覆使用某些URI。因此,我創建了一個與public static final成員分開的類。喜歡的東西:在java中添加字符串中的值

public class RestURI { 
     public RestURI(){} 
     public static final String getAllShipsURI = "/ship/manager/ships"; 
     public static final String getAllPortsURI = "/port/manager/ports"; 
    } 

但是,有沒有辦法來處理這樣的URI:

/infrastructure/ships/docked/" + shipId + "/capacity 

我正在尋找一種方式,這樣我可以在RestURI類中聲明的URL像上面和當我使用它們時,仍然會在測試中指定值。

+0

http://docs.oracle.com/javase/7/docs/api/java/net/URLEncoder.html可能會給你一些見解 – ha9u63ar 2015-03-19 12:57:59

回答

3

可以使用恆定格式,而不是一個字符串,並使用一個靜態的getter:

public static String getShipUri(int shipId) { 
    return String.format("/infrastructure/ships/docked/%d/capacity", shipId); 
} 
1

您可以使用String.format。就像這樣:

public class RestURI { 
    public RestURI(){} 
    public xxx() { 
     int shipId = 219001000; 
     ... String.format(dockedShipURIFormat, shipId) ...; 
    } 
    public static final String dockedShipURIFormat = "/infrastructure/ships/docked/%d/capacity"; 
} 
0

我用ANTLR StringTemplate正是這種在多個場合。在模板中進行內聯宏分析和一點if..else邏輯的能力非常強大,並且它保持了良好的可讀性。