在扩展类中使用全局变量

时间:2016-09-09 13:33:04

标签: java groovy junit extend

目前我的测试有一种奇怪的行为。 对于我的测试,我使用的是Groovy和JUnit 4. Groovy有自己的strang逻辑,所以不要担心我的代码:D

示例1:

@Log
class Test {
    private static def filledFormFields = [
        a: 1,
        b: 2
    ]

    @Before
    void check() {
        filledFormFields.each { k, v ->
            log.info("$k -> $v")
        }
    }

    @Test
    void testA() {
        System.exit(0)
    }
}

log.info打印fillFormFields的所有信息(即使它是静态的,是的,在我的情况下它必须是静态的)。

示例2:

@Log
class Test extends Manager {
    private static def filledFormFields = [
        a: 1,
        b: 2
    ]

    @Test
    void testA() {
        System.exit(0)
    }
}

@Log
abstract class Manager {
    @Before
    void check() {
        filledFormFields.each { k, v ->
            log.info("$k -> $v")
        }
    }
}

log.info什么都没打印,但为什么?

为什么我的filledFormFields是静态的? 目前我正在使用Groovy创建Selenium / Geb JUnit测试。每个测试都实例化filledFormFields变量new。在我的情况下,我不希望这样,因为它是静态的。它也是私有的,因为我有多个测试类,只使用其他同样的其他信息。这是我发现的唯一一种解决方案,它只将varibales保留在一个类中,而不是在每次测试中实例化。

0 个答案:

没有答案