亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring @Value 讀取的繼承屬性為空

Spring @Value 讀取的繼承屬性為空

藍山帝景 2023-01-05 16:46:46
我正在嘗試在子類中使用 spring 通過 @Value 讀取的一些屬性。這些屬性在父類中被正確讀取,但在子類中最終為 null。我使用的是注釋配置而不是 xml 配置。例如,我試圖在擴展 WebTemplate 的 TestListeners 中使用來自 WebTemplate 的屬性 reportType:@ContextConfiguration(classes = AppConfig.class)@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)public class WebTemplate extends AbstractTestNGSpringContextTests {    @Autowired    protected SeleniumDriver driver;    @Value("${environment.url}")    protected String environmentUrl;    @Value("${report.type}")    protected String reportType;    @Value("${auto.open.report}")    protected String autoOpenReport;}這里的屬性最終為空。如果我在 WebTemplate 中使用它們,一切都很好并且可以工作。public class TestListener extends WebTemplate implements ITestListener {        @Override    public void onTestStart(ITestResult result) {                System.out.println(reportType);                System.out.println(autoOpenReport);我還考慮過 Webtemplate 對象在測試周期的某個時候被破壞,并試圖在每次測試開始時將它們存儲在子類中,從 super 調用它們。這也沒有用:public class TestListener extends WebTemplate implements ITestListener {    private String reportType;    private String autoOpenReport;    @Override    public void onTestStart(ITestResult result) {        this.reportType = super.reportType;        this.autoOpenReport = super.autoOpenReport;有什么建議嗎?
查看完整描述

2 回答

?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

更新:經過一番調查發現問題實際上是由彈簧引起的。類 WebTemplate 帶有注釋@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)。據我了解,這會在每次測試之后和進入聽眾之前立即破壞整個 spring 環境。因此,當進入各自的 testNg 偵聽器時,spring 管理的所有內容都消失了。

我的興趣是在測試類中只有 PageObjects Autowired,所以我最終從 spring 環境中刪除了所有不是 PageObject 的東西。


查看完整回答
反對 回復 2023-01-05
?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

您有 2 個類,每個類都擴展,WebTemplate但是其中一個不由 Spring 管理,因此不會被注入/處理。擴展由 Spring 管理的類這一事實不會自動使創建的實例由 Spring 管理。

你有 2 個類,因此有 2 個不同的對象,它們不共享相同的WebTemplate屬性。它們是 2 個不同的類,因此是實例。


查看完整回答
反對 回復 2023-01-05
  • 2 回答
  • 0 關注
  • 220 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號