Klasa ExecTest uruchamia program zdefiniowany w zmiennej execName w
systemie, w którym uruchomiono test.
package customcode;
import com.ibm.rational.test.lt.kernel.services.ITestExecutionServices;
import com.ibm.rational.test.lt.kernel.services.ITestLogManager;
import org.eclipse.hyades.test.common.event.VerdictEvent;
import java.io.IOException;
/**
* Klasa ExecTest uruchamia program zdefiniowany w zmiennej execName
* w systemie, w którym uruchomiono test.
* Wynik testu jest ustawiany na Zaliczony, jeśli kod powrotu programu to 0.
* Wynik testu jest ustawiany na Niezaliczony, jeśli program nie został wykonany
* lub jeśli kod powrotu programu jest inny niż zero.
* W tym przykładzie programem jest perl.exe.
*/
/**
* @author Przykłady kodu niestandardowego IBM
*/
public class ExecTest implements
com.ibm.rational.test.lt.kernel.custom.ICustomCode2 {
/**
* Instancje tej klasy zostaną utworzone za pomocą konstruktora bez argumentów.
*/
public ExecTest() {
}
public String exec(ITestExecutionServices tes, String[] args) {
ITestLogManager logger = tes.getTestLogManager();
int rtnval = 1;
Process p = null;
String execName = "C:/Windows/System32/perl.exe C:/Perl/true.pl";
Runtime rt = Runtime.getRuntime();
// wykonaj test
try {
p = rt.exec(execName);
} catch (IOException e) {
logger.reportMessage("Nie można uruchomić programu " + execName);
logger.reportVerdict("Wykonanie programu " + execName + " nie powiodło się",
VerdictEvent.VERDICT_FAIL);
return null;
}
// zaczekaj na zakończenie testu
try {
rtnval = p.waitFor();
logger.reportMessage("Kod powrotu procesu ma wartość " +
String.valueOf(rtnval));
} catch (InterruptedException e1) {
logger.reportMessage("Nie można czekać na program " + execName);
logger.reportVerdict("Oczekiwanie na program " + execName + " zakończyło się niepowodzeniem",
VerdictEvent.VERDICT_FAIL);
return null;
}
// sprawdź kod powrotu testu i odpowiednio ustaw wynik testu
if (rtnval != 0)
{
logger.reportVerdict("Wykonanie zakończyło się niepowodzeniem", VerdictEvent.VERDICT_FAIL);
} else {
logger.reportVerdict("Wykonanie zakończyło się powodzeniem", VerdictEvent.VERDICT_PASS);
}
return null;
}
}