我有一个REST API测试套件,其中重复使用某些URI。因此,我创建了一个具有public static final
成员的单独类。类似的东西:
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 :(得分:3)
您可以使用常量格式,而不是String并使用静态getter:
public static String getShipUri(int shipId) {
return String.format("/infrastructure/ships/docked/%d/capacity", shipId);
}
答案 1 :(得分: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";
}
答案 2 :(得分:0)
我曾多次使用ANTLR StringTemplate来解决这个问题。在模板中使用内联宏解析和一点if..else逻辑的能力非常强大,并且它保持了良好的可读性。