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

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

如何調用 JUnit 測試作為另一個測試的設置?

如何調用 JUnit 測試作為另一個測試的設置?

蝴蝶不菲 2023-12-13 17:15:50
我正在嘗試創建一個 JUnit 測試,要求用戶使用管理員帳戶登錄。為了使我不必重復代碼,我完成了LoginJUnit 測試和GoToAdminPageJUnit 測試。首先訪問登錄頁面并登錄。第二個嘗試訪問只有管理員才能訪問的菜單,旨在從第一個離開的地方繼續。我想要的是GoToAdminPage從相同的頁面開始并以相同的環境Login結束。這個想法是,通過創建Login自動化測試,我可以將其重復用于我將來想做的任何需要管理員權限的測試。我想做的是,在 中setUp()調用GoToAdminPage第一個測試。然而,它的作用是,它啟動一個測試瀏覽器GoToAdminPage,然后立即啟動另一個測試瀏覽器,該瀏覽器由于包含指令Login而關閉。Login.tearDown()driver.quit()我想要的是GoToAdminPage期望在同一頁面結束時正確拾取Login,它沒有get說明,因此它永遠不會離開起始的 Firefox 頁面。我已經嘗試過一些事情。我的每個測試都繼承該類BasicTest,該類定義了許多內容(WebDriver、JS Executor、通用實用函數等)。在該課程中,我創建了一個perform()調用setUp()和的函數test()。這樣,在 中GoToAdminPage,我所要做的就是調用Login.perform(),GoToAdminPage.setUp()這將在技術上實現我想做的事情。然而,事實并非如此,并且具有與我上面提到的相同的效果。在網上查看,我發現我也可以做到這一點GoToAdminPage extends Login,但也有相同的結果。最后,我嘗試將整個Login.test()過程放在類中的一個單獨的函數中Login,我可以在 inside 調用該函數GoToAdminPage,但這具有相同的結果??偠灾坪醢l生的情況是,當我在內部調用另一個 JUnit 測試時GoToLoginPage,它會執行測試,但將其作為單獨的測試進行。我想要的是能夠本質上使這一切成為一個大測試,一旦我調用了Login,我就可以在我的用戶登錄的情況下與登錄后頁面進行交互。本質上我只是想GoToAdminPage成為 的Login擴展過程。這可能嗎?
查看完整描述

3 回答

?
阿波羅的戰車

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

將“登錄”步驟定義為常規方法(未用 注釋@Test)。然后您可以從任何您想要的地方調用該方法。來自您的登錄測試方法(在執行步驟后添加所需的斷言)以及來自任何setUp沒有實際運行登錄測試的方法。



查看完整回答
反對 回復 2023-12-13
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

最后我找到了解決方案:

  • GoToAdminPage延伸Login

  • GoToAdminPage.setUp()來電parent.setUp()

  • GoToAdminPage.test()來電parent.test()

使用它,我能夠使我的第二個測試使用其父級作為設置階段。


查看完整回答
反對 回復 2023-12-13
?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

您應該應用頁面對象模式,并創建一個登錄對象頁面。

Web 自動化中最流行的模式之一是所謂的頁面對象模式。要理解該模式的主要目標,首先您需要考慮您的 Web 自動化測試正在做什么。他們導航到不同的網頁并在各種元素上單擊/鍵入。頁面對象模式將頁面上發生的所有元素、操作和驗證包裝在一個對象中——頁面對象。

頁面對象模式的一些優點如下所示,

  • 減少代碼的重復

  • 使測試更具可讀性和健壯性

  • 提高測試的可維護性

恕我直言,在測試用例之間創建依賴關系并不是一個好的做法。

例子:

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.support.FindBy;

import org.openqa.selenium.support.PageFactory;


public final class LoginPage {


? ? @FindBy(id="username")

? ? private WebElement username;


? ? @FindBy(id="password")

? ? private WebElement password;


? ? @FindBy(id="loginBtn")

? ? private WebElement submit;


? ? public LoginPage(WebDriver driver) {

? ? ? ? PageFactory.initElements(driver, this);

? ? }


? ? public void submit(String username, String password) {

? ? ? ? this.username.sendKeys(username);

? ? ? ? this.password.sendKeys(password);

? ? ? ? submit.click();

? ? }

}


查看完整回答
反對 回復 2023-12-13
  • 3 回答
  • 0 關注
  • 200 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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