评估Statement的方法之前执行和测试方法在一起

时间:2012-12-13 13:26:52

标签: java junit annotations

我试图理解Statement类的evaluate()方法,例如根据Apply '@Rule' after each '@Test' and before each '@After' in JUnit中的代码

evaluate方法实际上在前后执行,然后继续前进。

                @Override
            public void evaluate() throws Throwable {
                // TODO Auto-generated method stub
                try{
                System.out.println("I am Rule1");
                arg0.evaluate();
                System.out.println("I am Rule2");

                }

上述代码的部分结果是:

I am Rule1
I am before
I am Test1
I am Rule2

因此,在“我是Rule1”之后,在使用evaluate方法时,“我之前”和“我是Test1”会如何显示?

1 个答案:

答案 0 :(得分:0)

来自@Rule注释的javadoc:

  

传递给TestRule的Statement将运行任何Before方法,然后运行Test方法,最后运行任何After方法

即,当您在Statement上调用evalute()方法时,会发生上述情况。围绕evaluate()调用的代码分别在Statement相关内容之前和之后调用。