0
@BeforeTest
@Parameters({"selenium.host", "selenium.port", "selenium.browser", "selenium.url" })
public void startServer(String host, String port, String browser, String url) throws Exception {      
        selenium = new DefaultSelenium(host, Integer.parseInt(port), browser, url);
        selenium.start();
    }

testng.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="SL-Grid" parallel="false">

    <parameter name="username" value="test" />
    <parameter name="password" value="test1" /> 

<test name="SL-Chrome" preserve-order="true"> 
    <parameter name="selenium.host" value="localhost"></parameter> 
        <parameter name="selenium.port" value="5555"></parameter> 
        <parameter name="selenium.browser" value="*googlechrome"></parameter> 
        <parameter name="selenium.url" value="http://properurl:8080/"></parameter> 
        <classes>
            <class name="com.TestBase" /> // Base class where all generic methods, setUp and tearDown methods present
            <class name="com.Login"> // Login related methods and inherit TestBase
                <methods>
                    <include name="loginPage" />
                    <include name="signIn" />
                </methods>
            </class>
            <class name="com.Page1">
                <methods>               
                    <include name="clickLinkA" />
                    <include name="isTextBoxXXXPresent" />
</methods> </class></classes></test>

<test name="SL-Firefox" preserve-order="true"> 
    <parameter name="selenium.host" value="172.16.4.21"></parameter> 
        <parameter name="selenium.port" value="5556"></parameter> 
        <parameter name="selenium.browser" value="*firefox"></parameter> 
        <parameter name="selenium.url" value="http://properurl:8080/"></parameter> 
        <classes>
            <class name="com.TestBase" /> // Base class where all generic methods, setUp and tearDown methods present
            <class name="com.Login"> // Login related methods and inherit TestBase
                <methods>
                    <include name="loginPage" />
                    <include name="signIn" />
                </methods>
            </class>
            <class name="com.Page2">
                <methods>               
                    <include name="clickLinkB" />
                    <include name="isListBoxXXXPresent" />
</methods> </class></classes></test>

</suite>

スイートを実行すると、TestBaseからstartServer()-> loginPage()を呼び出し、Login-> clickLinkA()からSignIn()を呼び出し、Page1からisTextBoxXXXPresent()を呼び出す必要があります。しかし、多くの場合、システムは最初にPage1クラスからmathodsを呼び出すため、失敗します(signInが呼び出されないため)。

誰かが私がここで間違っているところを教えてもらえますか?または他のより良い設計方法。または保存順序の代替

4

2 に答える 2

0

依存する別のテストがその後に実行されることを確認するために、dependsOnMethodsの使用を検討してください。数値の優先順位を設定することもできます。この場合、小さい数値が最初に実行されます。優先度のデフォルトは0であるため、優先度が設定されていないテストの後に実行するテストに対してのみ、これを設定する必要があります。

于 2012-03-15T18:20:29.170 に答える
0

これは、TestNGの人に報告できるTestNGの問題かもしれないと思います。ただし、問題を解決するには、ログインとサインインのメソッドをBeforeTestに含めるか、テストメソッドで呼び出すことができます。この場合はclickLinkAです。これがあなたのprblmを解決することを願っています。

于 2011-08-09T07:10:38.620 に答える