java – 迭代Test中的所有Play Framework路由

有没有办法迭代路由文件中的所有描述的服务?需要URL和HTTP方法.

我需要此功能来运行一些集成测试.

我正在使用Play for Java.

解决方法

不容易.我不久前设法破解了我的方式(没有scala诀窍).我会发布那些可能有用的代码.
public static List<String[]> parseRoutes() {
    scala.Option<play.core.Router.Routes> option = Play.application().getWrappedApplication().routes();
    if (option.isDefined()) {
        play.core.Router.Routes routes = option.get();
        scala.collection.Seq<scala.Tuple3<String,String,String>> doc = routes.documentation();
        scala.collection.Iterator<scala.Tuple3<String,String>> it = doc.iterator();

        List<String[]> listofRoutes = new ArrayList<String[]>();

        while(it.hasNext()) {
            scala.Tuple3<String,String> tuple = it.next();
            //tuple._1() is the method and tuple._2() the url... tuple._3() is the controller name
            String[] route = {tuple._1(),tuple._2()};
            listofRoutes.add(route);
            Logger.debug("route -> " + Arrays.toString(route));  
        }
        return listofRoutes;
    }
    return null;
}

不要担心.iterator()显示一个方法iterator()对于Seq< Tuple3< String,String>>类型是不明确的.它在游戏中编译得很好.

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...