0

我试图理解 Statement 类的 evaluate() 方法,例如,根据JUnit 中每个“@Test”之后和每个“@After”之前应用“@Rule”中的代码

评估方法实际上在之前和之后都执行,然后继续前进。

                @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

那么,在“I am Rule1”之后,“I am before”和“I am Test1”在评估方法时如何显示?

4

1 回答 1

0

@Rule注释的javadoc:

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

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

于 2012-12-13T13:39:14.443 回答