0

Rule Designer 用のカスタム シナリオ プロバイダーを作成しようとしていますが、実行構成を介してそれを実行するためのプラグインを作成しました。プラグインを作成して DVS Runner を実行できました。ただし、IlrDVSRunner で NullPointerException を受け取ります。どうしても例外を解決できません。どんな助けでも大歓迎です。

MotorScenarioProvider.java

public class MotorScenarioProvider implements IlrScenarioProvider, Serializable {
private static final long serialVersionUID = 20150702L;

public MotorScenarioProvider() {
    super();
    System.out.println("MotorScenarioProvider - Constructor");
}

public void initialize(IlrScenarioSuiteExecutionContext context)
        throws IlrInitializationException {
    System.out.println("MotorScenarioProvider - Initialize");
}

public int getScenarioCount() throws IlrScenarioProviderException {
    System.out.println("MotorScenarioProvider - getScenarioCount");
    return 1;
}

public IlrScenario getScenarioAt(int indx)
        throws IlrScenarioProviderException {
    System.out.println("MotorScenarioProvider - getScenarioAt");

    IlrScenarioImpl scenario = new IlrScenarioImpl();
    Map<String, Object> inputParameters = new HashMap<String, Object>();

    //Setting Blank Scenario for testing purpose
    scenario.setName("Scenario 1");
    inputParameters.put("req", new Object());
    inputParameters.put("req", new Object());
    scenario.setInputParameters(inputParameters);

    return scenario;
}

MotorScenarioProviderRunner.java

public class MotorScenarioProviderRunner extends IlrDVSRunner {
/**
 * Create a DVS scenario suite descriptor
 * 
 * @return The scenario suite descriptor
 */
public IlrScenarioSuiteDescriptor createScenarioSuiteDescriptor() {
    IlrScenarioSuiteDescriptorFactory scenarioSuiteDescriptorFactory = new IlrScenarioSuiteDescriptorFactory();
    IlrScenarioFormatDescriptor formatDescriptor = IlrScenarioFormatDescriptorFactory
            .getInstance().createScenarioFormatDescriptor();
    formatDescriptor
        .setScenarioProviderClassName(MotorScenarioProvider.class.getName());
    IlrScenarioSuiteDescriptor suiteDescriptor = scenarioSuiteDescriptorFactory
            .createScenarioSuiteDescriptor(formatDescriptor);
    suiteDescriptor.setKPIEnabled(false);
    suiteDescriptor.setTestEnabled(true);
    suiteDescriptor.setProductionRulesetArchive(new IlrRulesetArchive());
    System.out.println("MotorScenarioProviderRunner: createScenarioSuiteDescriptor");

    suiteDescriptor.add("SCENARIO_NAME", "Scenario 1");

    return suiteDescriptor;
}

/**
 * The main method run from the {@link IlrDVSLaunchConfigurationDelegate}
 * launch method.
 * 
 * @param args
 *            The args needed to run the scenarios and build the scenario
 *            suite descriptor.
 */
public static void main(String[] args) {
    MotorScenarioProviderRunner runner = new MotorScenarioProviderRunner();
    String[] data = runner.extractCustomArgs(args);
    // TODO read the custom parameters from the 'data' attribute and not
    // from the 'args' attribute
    System.out.println("MotorScenarioProviderRunner: main");

    try {
        IlrScenarioSuiteDescriptor scenarioSuite = runner
                .createScenarioSuiteDescriptor();

        if(scenarioSuite == null)
            System.out.println("scenarioSuite is NULL");
        if(args == null)
            System.out.println("args is NULL");

        runner.run(args, scenarioSuite); **//EXCEPTION OCCURS HERE**
    } catch (IOException e) {
        e.printStackTrace();
    }
} }
4

2 に答える 2

0

私はこれの解決策を考え出しました。

実際、IlrDVSRunner.Run メソッドは、起動設定から自動挿入されるカスタム引数の 3 か所で、起動設定のタイプ、つまり実行またはデバッグを探します。

カスタム引数の最初の引数は、DVS ランナーに提供するカスタム データです。私の場合、データをシナリオに追加するのはScenario Provider クラスでした。そのため、起動構成を更新して、シナリオ プロバイダーのクラス名をカスタム シナリオ プロバイダーに 提供するテキスト ボックスを配置すると、最終的に問題が解決されます。

Rule Designerで XML を直接実行\デバッグするために使用できる XML Scenario Provider は次のとおりです。XML Scenario Provider

ありがとうございます

于 2015-10-20T03:50:38.020 に答える
0

問題は、ルールセット アーカイブをロードしていないことです。

それ以外の:

suiteDescriptor.setProductionRulesetArchive(new IlrRulesetArchive());

次の行に沿って何かを使用します。

JarInputStream is = new JarInputStream(new FileInputStream(rulesetJar));
IlrRulesetArchive ruleset = IlrRulesetArchive.extractArchive(new IlrJarArchiveLoader(is));
suiteDescriptor.setProductionRulesetArchive(ruleset);
于 2015-09-14T18:41:48.183 に答える