2015-12-24 31 views
0

這裏是我的課堂,@Autowired領域是有代碼:Spring @Autowired字段爲空。我在不同的類使用@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; 
} 

這裏是我的另一個類,我想使用上述字符串變量

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(); 
+0

只有選項我能看到的是'query()'返回null ...? (如果這是正確的,這是行) – Betlista

+0

這與@Autowired無關,似乎你的查詢爲空......你試過調試嗎?! – Tarik

+0

@Betlista對不起,我沒有看到你的評論 – Tarik

回答

1

我自己解決了上述問題。

我已經在那裏我使用@Autowired領域

@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(); 
} 

使用@Service在類( 「TESTDATA」) }

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

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

這解決了我的問題與空指針異常。

+1

很好,你找到你的解決方案。但是,這個問題的答案並不完整。你沒有共享異常堆棧跟蹤等等。請更新問題的必要細節,以便如果有人面臨同樣的問題,他們可以使用此線程查找答案。 –