2

@Factory で TestNG を初めて使用しようとしていますが、うまくいきません。理由を説明します。

「サイトの起動」、「ログイン」、「ユーザーが自分のダッシュボードにいるかどうかを確認する」などのいくつかのテストがあるExtendというクラスがあり、工場から渡されたすべてのデータに対してこれらの順序が必要でしたテストは常に同じ "起動サイト">>"ログイン">>"ユーザーがダッシュボードにいることを確認">>"ログアウト" OK? したがって、次のextend.xmlファイルとクラスがあります。

            <suite name="ExtendFactory"  group-by-instances="true">
              <test name="Factory"  preserve-order="true" group-by-instances="true"> 
                <classes>
                  <class name="net.whaooo.ExtendFactory">
                    <methods>
                      <include name="launchSite"></include>
                      <include name="loginTest" />
                      <include name="userIsInHisOwnDashboardTest" />
                      <include name="logoutTest" />
                    </methods>
                  </class>
                </classes>
              </test>
            </suite>

拡張クラス:

        public class Extend extends BaseTest{
            protected static FirefoxDriver driver;
            private String a_driver;
            private String password;

            public Extend(String a_driver, String pwd){
                this.a_driver = a_driver;
                this.password = pwd;
            }
            @BeforeTest
            public void stDriver() {
                DesiredCapabilities caps = DesiredCapabilities.firefox(); caps.setCapability(CapabilityType.ForSeleniumServer.ENSURING_CLEAN_SESSION, true); 
                driver = new FirefoxDriver(caps);
                driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
            }
            @AfterTest
            public void stopDriver() {
                driver.close();
            }   
            @Test
            public void launch() {
                launchSite(driver);
            }
            @Test (description = "Enter a valid login as driver")
            public void loginTest() {
                login(driver, a_driver, password);
            }
            @Test (description = "Check the driver is in his own dashboard")
            public void userIsInHisOwnDashboardTest(){
                userIsInHisOwnDashboardTest(driver, a_driver, password);
            }
            @Test(description="logout")
            public void logout(){
                logoutTest(driver);
            }
        }

単純化された工場:

    public class ExtendFactory {
      @Factory
      public Object[] createInstances() {
           Object[] result = new Object[2]; 
              result[0] = new Extend("test1@test.com","tester");
              result[1] = new Extend("test2@test.com","tester");
            return result;
          }
    }

しかし、私の問題は、preserve-order="true" group-by-instances="true" 句を挿入しても、テストが開始される順序が xml ファイルで指定された順序に従わないことです。 order-by-instances="true" を使用します。誰でも私を助けることができますか?

4

5 に答える 5

0

私は使用してきました

@Test(dependsOnMethods = "TestName")

「TestName」は、実行する前提条件のテストです。したがって、ログイン テストでは、次の注釈が必要です。

@Test(dependsOnMethods = "launchSite")

9 つのテストを続けて実行しています。dependsOnMethods を追加して以来、すべて問題なく順番に実行されています。

于 2012-06-21T20:52:47.643 に答える
0

最初のメソッドが実行されない場合、2 番目のテストケースを実行しても意味がありません。つまり、「サイトの起動」が失敗した場合、「ログイン」を実行する必要はありません。これにより、実行順序も保証されます。依存メソッドを確認する

于 2012-06-21T13:06:19.193 に答える
0

ご回答ありがとうございます。「order-by-instances="true"」を指定する @Factory を使用することになり、動的オブジェクトよりも依存関係を挿入しました!

于 2012-06-25T11:00:16.557 に答える