ExecTest クラスの機能は、execName 変数で定義されるプログラムを、テストの実行先にするシステムで実行することです。
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;
/**
* ExecTest クラスの機能は、execName 変数で定義されるプログラムを、テストの
* 実行先にするシステムで実行することです。
* プログラムの戻りコードが 0 の場合、テスト判断は PASS (合格) に設定されます。
* プログラムを実行しなかった場合や、プログラムの戻りコードがゼロ以外の場合、
* テスト判断は FAIL (不合格) に設定されます。
* このサンプルでは、プログラムは perl.exe です。
*/
/**
* @作成者 IBM カスタム・コード・サンプル
*/
public class ExecTest implements
com.ibm.rational.test.lt.kernel.custom.ICustomCode2 {
/**
* no-arg コンストラクターを使用してこのインスタンスを作成する。
*/
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();
// テストを実行
try {
p = rt.exec(execName);
} catch (IOException e) {
logger.reportMessage("Unable to run = " + execName);
logger.reportVerdict("Execution of " + execName + " failed",
VerdictEvent.VERDICT_FAIL);
return null;
}
// テストが完了するまで待機
try {
rtnval = p.waitFor();
logger.reportMessage("Process return value is " +
String.valueOf(rtnval));
} catch (InterruptedException e1) {
logger.reportMessage("Unable to wait for " + execName);
logger.reportVerdict("WaitFor on " + execName + " failed",
VerdictEvent.VERDICT_FAIL);
return null;
}
// テストの戻りコードを確認し、テスト判断を適切に設定
if (rtnval != 0)
{
logger.reportVerdict("Execution failed", VerdictEvent.VERDICT_FAIL);
} else {
logger.reportVerdict("Execution passed", VerdictEvent.VERDICT_PASS);
}
return null;
}
}