機能テストにAnt1.7+ Junit 4 + SeleniumGrid2を使用しています。
Junit 4では、「@ RunWith(Suite.class)」を使用して複数のクラスを実行します。コードはここにあります:
package com.black;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({TestGrid.class,TestGrid2.class})
public class TestAll{
}
ご覧のとおり、このTestAll.javaは、TestGrid.classとTestGrid2.classの2つのクラスを呼び出します。
TestGrid.classは1つのWindows7(10.1.3.50)で実行され、TestGrid2.classは別のWindows 7マシン(10.1.3.77)で実行されます。
コードはここにあります:
------------ TestGrid.class -------------
package com.blackline;
import static org.junit.Assert.assertEquals;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import org.openqa.selenium.*;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
public class TestGrid {
private WebDriver driver;
private String baseUrl;
int sleepTime = 0;
@Before
public void setUp() throws Exception {
System.out.println("TestGrid.java setUp.");
//Use Firefox
DesiredCapabilities capability = DesiredCapabilities.firefox();
driver = new RemoteWebDriver(new URL("http://10.1.3.50:5555/wd/hub"), capability);
baseUrl = "http://10.1.3.12/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
Capabilities actualCapabilities = ((RemoteWebDriver)driver).getCapabilities();
System.out.println(actualCapabilities);
}
@Test
public void test01()
{
System.out.println(1);
}
@Test
public void test02()
{
System.out.println(2);
assertEquals("a", "b");
}
@After
public void tearDown() throws Exception {
}
}
---------- TestGrid2.java -------------
package com.xbosoft.blackline;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import org.openqa.selenium.*;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.Select;
public class TestGrid2 {
private WebDriver driver;
private String baseUrl;
int sleepTime = 0;
@Before
public void setUp() throws Exception {
System.out.println("TestGrid2.java setUp.");
//Use Firefox
DesiredCapabilities capability = DesiredCapabilities.firefox();
driver = new RemoteWebDriver(new URL("http://10.1.3.77:5555/wd/hub"), capability);
baseUrl = "http://10.1.3.12/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
Capabilities actualCapabilities = ((RemoteWebDriver)driver).getCapabilities();
System.out.println(actualCapabilities);
}
@Test(timeout=10000)
public void testSelenium() throws InterruptedException
{
driver.get("http://seleniumhq.org/");
Thread.sleep(sleepTime);
driver.get("http://seleniumhq.org/projects/");
Thread.sleep(sleepTime);
driver.get("http://seleniumhq.org/download/");
Thread.sleep(sleepTime);
driver.get("http://seleniumhq.org/docs/");
Thread.sleep(sleepTime);
driver.get("http://seleniumhq.org/support/");
Thread.sleep(sleepTime);
driver.get("http://seleniumhq.org/");
Thread.sleep(sleepTime);
driver.get("http://seleniumhq.org/projects/");
Thread.sleep(sleepTime);
}
@After
public void tearDown() throws Exception {
}
}
Antbuild.xmlのjunitおよびjunitReportの部分は次のとおりです。
===================
<target name="junit" depends="compile">
<junit printsummary="yes" fork="true" haltonfailure="false" failureproperty="tests.failed" showoutput="true">
<classpath>
<pathelement path="${classes.dir}" />
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</classpath>
<formatter type="xml" />
<batchtest todir="${report.dir}">
<fileset dir="${classes.dir}">
<include name="**/TestAll.class" />
</fileset>
</batchtest>
</junit>
</target>
<target name="executeRemote">
<sshexec host="10.1.3.50"
username="sshuser"
password="qqqqq"
trust="true"
command="D:\bat.bat"/>
</target>
<target name="junitReport" depends="junit">
<junitreport todir="report">
<fileset dir="report">
<include name="TEST-*.xml" />
</fileset>
<report styledir="reportstyle" format="frames" todir="report" />
</junitreport>
<fail if="tests.failed" />
</target>
==========================
エクスポートされたHTMLレポートでは、[ホスト名]フィールドで、TestAll.javaが配置されているマシンの名前として常に表示されます。ただし、スクリプトが実際に実行されているマシンの名前を取得することはできません。
画像を投稿できません。ここにあるよ。 http://i.stack.imgur.com/d6ZL4.png
AntがエクスポートしたTESTS-TestSuites.xmlを確認しました。このファイルには、リモートマシンのホスト名が含まれていません。
リモートマシンのホスト名をこのTESTS-TestSuites.xmlファイルに出力する方法はありますか?XSLTを使用してそれらをHTMLレポートに表示できますか?
Antのソースコードをどこかで変更する必要があると思いますか?
ありがとう!