0

如何有效地使用 PicoContainer Setter 注入?

我需要能够跨 Cucumber 步骤传递数据,并且希望避免将参数传递给构造函数的传统 PicoContainer 方法(使用 PicoContainer 而不采取通过构造函数将类注入其他类的方法)。

到目前为止,我有以下设置但没有运气,有什么想法吗?

我的步骤类:

public class MainSteps extends Base {

    DefaultPicoContainer pico = new DefaultPicoContainer(new SetterInjection("init"));

    public MainSteps() {
        this.pico.addComponent(Account_Pojo.class);
    }

    @Given("^I went to the farmm$")
    public void i_went_to_the_farm() {
        loadUrl(Global_Vars.HOMEPAGE_URL);
        Account_Pojo account_pojo = pico.getComponent(Account_Pojo.class);
        account_pojo.setFirstName("joe");
        System.out.println(account_pojo.getFirstName()); //outputs joe
    }

    @Given("^I went to the zoo$")
    public void i_went_to_the_zoo() {
        Account_Pojo account_pojo = pico.getComponent(Account_Pojo.class);
        System.out.println(account_pojo.getFirstName()); //null pointer exception
    }
    }

Pojo 设置:

public class Account_Pojo {
    private String firstName;

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getFirstName() {
        return firstName;
    }
}

正如您从上面的代码中看到的那样,位于第二步中的以下代码行应该返回 joe 但是它似乎返回了一个空值:

System.out.println(account_pojo.getFirstName()); //null pointer exception
4

1 回答 1

1

将 firstName 更改为静态,例如

private static String firstName;

或者

reference在你做的地方传递同一个对象

System.out.println(account_pojo.getFirstName());

于 2019-10-03T08:55:35.363 回答