簡體   English   中英

Spring @Autowired字段為空。 我在不同的類中使用@AutoWired字段

[英]Spring @Autowired fields are null. I am using @AutoWired Fields in different class

這是我的班級代碼,其中有@Autowired字段:

測試

@ContextConfiguration("classpath:spring.xml")
public abstract class TestA extends AbstractTestNGSpringContextTests {

    @Autowired
    @Value("#{environment.username}")
    public String username;

    @Autowired
    @Value("#{environment.password}")
    public String password;

    @Autowired
    @Value("#{environment.passwordtoken}")
    public String passwordToken;
}

這是我嘗試使用上述String變量的另一個類

public class TestData extends TestA {

    ForceApi api;


    public void setApi() {
        // Instantiating api by setting username and pwd
        System.out.println("In getApi");
        ApiConfig ac = new ApiConfig();
        ac.setUsername(username);
        ac.setPassword(passwordToken);             ac.setLoginEndpoint("https://login.salesforce.com/services/Soap/u/34.0/");

        api = new ForceApi(ac);
    }

    public void pTestData() {

        setApi();
        // Create test data for play group admin
        String idSoql = "SELECT id FROM PlayGroup__c";

        List<Map> mapResults = api.query(idSoql).getRecords();
    }
}

並嘗試使用以下類執行測試:

public class TestB extends TestA{
    @Test(dataProvider="browsers")
    public void test1(){
        TestData td = new TestData();
        td.pTestData();
    }

}

請幫助我確定我在哪里做錯了。 我在這行中得到了空指針異常:

List<Map> mapResults = api.query(idSoql).getRecords();

我自己解決了上述問題。

我在使用@Autowired字段的類中使用了@Service(“ testdata”)

@Service("testdata")
public class TestData extends TestA {

ForceApi api;


public void setApi() {
    // Instantiating api by setting username and pwd
    System.out.println("In getApi");
    ApiConfig ac = new ApiConfig();
    ac.setUsername(username);
    ac.setPassword(passwordToken);             ac.setLoginEndpoint("https://login.salesforce.com/services/Soap/u/34.0/");

    api = new ForceApi(ac);
}

public void pTestData() {

    setApi();
    // Create test data for play group admin
    String idSoql = "SELECT id FROM PlayGroup__c";

    List<Map> mapResults = api.query(idSoql).getRecords();
}

}

並在TestB中進行如下更改

public class TestB extends TestA{
@Test(dataProvider="browsers")
public void test1(){
    TestData td = (TestData )applicationContext.getBean("testdata");
    td.pTestData();
}

}

並在spring.xml中添加了如下的bean

<bean id="testdata" class="data.TestData"/> 

使用Null指針異常解決了我的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM