使用JUnit对ADF应用程序进行单元测试

JUnit是Java语言的单元测试软件包,由于ADF构建在J2EE框架之上,因此可以用来测试Oracle ADF应用程序。 单元测试基本上是根据某些定义的测试标准来验证最小的可测试模块的过程。 在这里,我将说明如何在JDeveloper 12.2.1.3中设置和使用JUnit来测试ADF应用程序。

JDeveloper 12.2.1.3带有JUnit扩展,因此无需单独安装。 让我们从在JDeveloper IDE中创建Fusion Web应用程序开始。 在这里,我使用默认HR模式的Departments表来为ADF应用程序准备模型。

ADF应用

下一步是创建一个新项目来保存单元测试,以使整个应用程序看起来不模糊。 右键单击应用程序名称,然后选择“ 新建”->“从图库”->“常规”->“项目”->“ Java项目”  

ADF应用

为该项目命名,然后单击“ 完成”按钮。

ADF应用

现在下一步是为业务组件创建Test Suite,在此之前,我们应该知道单元测试中使用的一些术语。

测试套件 –一组测试用例

测试装置 –一个用于处理长时间运行的测试用例并保持多个测试用例状态的类。

断言 –根据预期结果检查测试用例的结果。

现在打开测试套件向导,右键单击新项目,然后选择新建–>从图库–>常规–>单元测试–> ADF业务组件测试套件

ADF应用

单击确定按钮并配置测试套件。 您可以看到,这里我选择了Model项目和DeptAm应用程序模块进行测试。 您也需要为数据库连接选择配置,在这里我选择了DeptAMLocal。

ADF应用

单击下一步按钮,看到该向导将生成一个Test Suite类和一个Test Fixture类。 该向导还将为应用程序中的每个视图对象生成单独的单元测试类。

ADF应用

现在单击完成按钮,您可以在新项目下创建所有文件。

DeptAmFixture.java –测试装置类

AllDeptAMTests.java –测试套件类

DepartmentsVO1VOTest.java –部门ViewObject的单元测试类

ADF应用

现在打开DepartmentsVO1VOTest.java类,然后查看默认的测试用例,该用例检查Department View Object不应为null。

您可以在此处看到@Test批注,这表明此java方法是单元测试,并且在执行测试断言之后用于验证测试结果。

@Test
public void testAccess() {
    ViewObject view = fixture1.getApplicationModule().findViewObject("DepartmentsVO1");
    assertNotNull(view);
}

@Before
public void setUp() {
}

@After
public void tearDown() {
}

要检查此默认测试用例,请右键单击测试套件类,然后选择运行。 您可以看到单元测试成功执行。

ADF应用

下一步是创建一些自己的单元测试,我已经创建了该单元测试,该单元测试用于检查Department ID在新创建的行中是否不应为null。

@Test
public void checkDeptIdNotNull() {
    ViewObject deptVo = fixture1.getApplicationModule().findViewObject("DepartmentsVO1");
    Row newRow = deptVo.createRow();

    newRow.setAttribute("DepartmentId", 222);
    newRow.setAttribute("DepartmentName", "Testing");

    assertNotNull("DepartmentId should not be null", newRow.getAttribute("DepartmentId"));
}

因此,在上面的代码中,我在Departments视图对象中创建了一个新行,并在Department Id中设置了222。 现在运行该测试用例。

ADF应用

您可以在这里看到测试成功通过,因为Department Id不为null,太好了。 现在在代码中注释此行

//newRow.setAttribute(“DepartmentId”,222);

然后再次运行测试

ADF应用

看到测试由于AssertionError失败,因为这次部门ID为null。 这就是我们可以编写自己的单元测试进行检查的方式。

在这里,我还要编写一个测试用例,以检查部门是否在数据库中。 我将1990年传递为不在数据库中的部门ID。

@Test
public void findDepartment() {
    ViewObject deptVo = fixture1.getApplicationModule().findViewObject("DepartmentsVO1");
    int deptId = 1990;

    Row row[] = deptVo.findByKey(new Key(new Object[] { deptId }), 1);
    Integer count = row.length;
    //assertTrue fails when second parameter evaluates to "false"
    assertTrue("Department Not Found", count.compareTo(0) == 1);

}

让我们看看结果

ADF应用

这就是我们在Oracle ADF应用程序单元测试中配置和使用JUnit的方式。

翻译自: https://www.javacodegeeks.com/2019/07/unit-testing-adf-application-using-junit.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值