我正在尝试开发一个将用于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,我有些疑惑:
如果我尝试在我的电脑上运行此代码,它会要求我输入用户名/密码,当该类将在iSeries上使用时,它也会询问,或者它将采用运行该应用程序的用户
有什么方法可以在我的电脑上测试这个部分,以便知道它是否适用于制作?我的想法是首先使用模拟进行单元测试,但后来我想进行一些不使用模拟的功能测试,可能是某种模拟器或者类似的...
提前致谢。
答案 0 :(得分:2)
我建议您定义主机名,用户ID和&amp; AS400对象的密码参数作为字段(或常量),并根据它们的运行方式进行分配。
进行调试时
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上运行的功能在主机上的工作方式相同。
答案 1 :(得分:0)
在回答问题1,用户ID和密码问题时,请确保在iSeries端的类路径中使用JT400Native.jar而不是JT400.jar。使用JT400Native.jar时,在使用com.ibm.as400.access类时,应该使用当前正在运行的作业的用户标识和密码。
在回答问题2时,如果没有iSeries与之交谈,则无法测试您的程序。 (可选)您可以从普通文件输入流中读取或写入普通文件输出流而不是IFSFile。这至少可以让您测试代码的业务逻辑。但是,当测试com.ibm.as400.access类时,如果没有真正的iSeries,就无法做到。一个模拟器会很好,但架构是如此不同,我不知道有谁做过。