使用JUnit时从测试类中跳过方法

时间:2014-07-21 08:09:10

标签: java junit

我有以下情况。我有一个班级

A  {

    public void setProps() {
        // setting propertis

        makeSomeWeirdConfigs();

        //setting another properties

    }

    private void makeSomeWeirdConfigs() {
    // making configs
    }

    public Props getProps() {
    //getting properties
    }
}

现在我想在JUnit测试用例的帮助下检查是否使用方法setProps()正确设置了属性,然后使用getProps()获取属性。

问题是这个方法makeSomeWeirdConfigs()位于setProps()的中间,在没有适当环境的情况下执行会导致很多异常,所以不设置此方法下面的道具。

此方法也尝试执行危险的操作,例如执行一些脚本等。所以我的问题是可以在JUnit测试用例中以某种方式跳过此方法makeSomeWeirdConfigs(),因此只有setProps()和{ {1}}已执行。

不应更改原始A类。

谢谢

1 个答案:

答案 0 :(得分:1)

"不应更改原始课程" - 然后你正在寻找一些嘲弄,字节码摆弄,AOP。

如果您使makeSomeWeirdConfig受保护,则可以覆盖该方法并测试子类。测试额外的标志也一样。

如果您可以将代码更好地放在委托人的声音代码中。

class SomeWeirdConfig {
    void makeSomeWeirdConfigs() { ... }
}

SomeWeirdConfig delegate = new SomeWeirdConfig();

public void initTest() { delegate = null; }

private void makeSomeWeirdConfigs() {
    if (delegate != null) {
        delegate.makeSomeWeirdConfigs();
    }
}    

然后测试可以禁用设置器。