簡體   English   中英

java.lang.Exception:測試類應該只有一個公共零參數構造函數:

[英]java.lang.Exception: Test class should have exactly one public zero-argument constructor:

我有一個類:函數庫,我在構造函數中實例化 webdriver 實例,如下所示

public class FunctionLibrary {
    public WebDriver driver;

    public FunctionLibrary(WebDriver driver)
    {
        driver = new FirefoxDriver();
        this.driver=driver;
    }

    public WebDriver getDriver(){
        return this.driver;
    }
}

我正在訪問擴展超類的子類中的 webdriver 實例:函數庫

public class Outlook extends FunctionLibrary{
    public Outlook(WebDriver driver) {
        super(driver);      
    }

    @Before
    public void testSetUp()
    {
        getDriver().navigate().to("https://google.com");
    }

    @After
    public void closeTest()
    {
        getDriver().close();
    }

    @Test
    public void openOutlookAndCountTheNumberOfMails()
    {
        System.out.println("executed @Test Annotation");        
    }
}

當我執行上面的一段 junit 代碼時,出現錯誤

java.lang.Exception:測試類應該只有一個公共零參數構造函數

任何人都可以讓我知道我要去哪里錯了

無需將參數傳遞給 FunctionLibrary 的構造FunctionLibrary ,因為您只需覆蓋它的值:

public class FunctionLibrary {
    public WebDriver driver;

    public FunctionLibrary()
    {
        this.driver=new FirefoxDriver();
    }

    // etc.
}

進行此更改意味着您不需要從測試類中傳遞參數:只需刪除其構造函數即可。

您需要在課程頂部使用@RunWith(Parameterized.class)

如果您正確使用@Parameters ,它將運行得很好。 :)

您沒有公共零參數構造函數。 測試環境不知道將什么傳遞給它的構造函數,因為您需要傳遞一個WebDriver對象。

public Outlook(WebDriver driver) {
    super(driver);
}

還有,你想讓測試環境通過什么? 而是做一些事情,比如保留一個零參數構造函數,然后自己傳入一個 WebDriver 實例。 這樣的事情應該有效。

public Outlook() {
    super(new FirefoxDriver());      
}

希望這可以幫助。

暫無
暫無

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

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