1

我正在尝试开发一个将在 iSeries 上的 RPG 程序上使用的 Java 类。该类将使用 IFSFile 管理文件。问题是我不知道如何在我的电脑上测试这个(如果可能的话)。

我的代码将类似于:

import java.io.BufferedReader;
import java.io.IOException;

import com.ibm.as400.access.AS400;
import com.ibm.as400.access.AS400SecurityException;
import com.ibm.as400.access.IFSFile;
import com.ibm.as400.access.IFSFileReader;
(...)

        AS400 system = new AS400("AS400SystemName");
        IFSFile file = new IFSFile(system, "/File1");
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new IFSFileReader(file));
        } catch (AS400SecurityException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Read one line of the file
        String line1 = null;
        try {
            line1 = reader.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Print line
        System.out.println(line1);

        // Close reader
        try {
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }</pre>

我不太了解iSeries,我有一些疑问:

  1. 如果我尝试在我的 PC 上运行此代码,它会询问我一个用户/密码,当该类将在 iSeries 上使用时,它也会询问,或者它会占用正在运行应用程序的用户?

  2. 有什么方法可以在我的 PC 上测试这部分,以了解它是否可以用于生产?我的想法是首先使用模拟进行单元测试,但后来我想进行一些不使用模拟的功能测试,也许是某种模拟器或类似的......

提前致谢。

4

2 回答 2

2

我建议您将 AS400 对象的主机名、用户 ID 和密码参数定义为字段(或常量),并根据其运行方式分配它们。

调试时

String host = "AS400SystemName";
String user = "youruserid";
String pass = "yourpassword";

AS400 system = new AS400(host, user, pass);

当您在 IBM i 主机上运行该类时,定义如下变量:

String host = "localhost";
String user = "*CURRENT";
String pass = "*CURRENT";

您可能还想使用setGUIAvailable将 AS400 对象上的 GUI 可用属性设置为 false 。这样,如果传递了错误的用户 ID 或密码,则会抛出异常,而不是弹出 GUI 登录窗口。

通常,在 PC 上运行的功能在主机上也能正常运行。

于 2013-07-01T16:50:21.343 回答
0
  • 在回答问题 1(用户标识和密码问题)时,请务必在 iSeries 端的类路径中使用 JT400Native.jar 而不是 JT400.jar。使用 JT400Native.jar 时,在使用 com.ibm.as400.access 类时,它应该获取当前正在运行的作业的用户 ID 和密码。

  • 在回答问题 2 时,您无法在没有 iSeries 的情况下测试您的程序。或者,您可以从普通文件输入流中读取或写入普通文件输出流而不是 IFSFile。这至少可以让您测试代码的业务逻辑。但是,当需要测试 com.ibm.as400.access 类时,如果不访问真正的 iSeries,您就无法做到这一点。一个模拟器会很好,但架构是如此不同,我不知道有谁做过。

于 2013-07-02T13:09:33.347 回答