写点什么

ABAP 和 Java 的单元测试 Unit Test

作者:Jerry Wang
  • 2021 年 11 月 18 日
  • 本文字数:756 字

    阅读完需:约 2 分钟

ABAP 和 Java 的单元测试 Unit Test

ABAP

ABAP class 单元测试的执行入口,CLASS_SETUP, 是硬编码在单元测试框架实现 CL_AUNIT_TEST_CLASS 里的。




待执行的单元测试方法通过 CL_AUNIT_TEST_CLASS~get_Test_Methods 返回到一个内表里,然后 LOOP 该内表,依次执行。



Java

最常用的 Maven plugin 是 maven-surefire-plugin,可以方便地单独触发单元测试,或者把单元测试的执行集成为 Maven build 的一个子步骤。



下图表明在执行 mvn clean install 时,执行了 srv/test/java/com/sap/testcase 下面的两个 test case:



那么 maven-surefire-plugin 是如何知道哪些.java 文件里面的测试方法需要执行呢?到这个目录下面打开 maven-surefire-plugin 的实现文件 SurefirePlugin.class:.m2\repository\org\apache\maven\plugins\maven-surefire-plugin\2.20\maven-surefire-plugin-2.20\org\apache\maven\plugin\surefire


反编译出来,在 getDefaultIncludes 里面发现了答案:所有符合后缀 Test*.java, Tests.java, TestCase.java 结尾的 Java 文件都作为执行单元测试的候选,



Java 里单元测试的灵活之处在于可以给同一 class 里的不同方法指定不同的 Category:



然后用命令行 mvn install 加上参数-P SlowTests 只执行 category 为 SlowTests 的那些方法:




关于 @Category 注解的更多高级用法,参考我的 SAP Community 博客: Run only given sets of your unit test via @Category


Netweaver 和 CloudFoundry 的服务器日志


先来了解 ABAP netweaver.

事务码 SMICM,Goto->HTTP Plug-In->Server Logs:



再来看看 CloudFoundry.


假设我部署本地应用到 CloudFoundry 之后,应用的状态变为 CRASHED。然而从应用的控制台看不出太多有用的信息。



此时可以使用命令 cf logs <application name> --recent 来查看服务器端日志:



从返回的日志我们能清楚看到应用部署后 CRASH 的原因为 manifest.yml 里为应用分配的 512M 不够大。



把该数字调大后错误即解决。





发布于: 1 小时前阅读数: 6
用户头像

Jerry Wang

关注

个人微信公众号:汪子熙 2017.12.03 加入

SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使。

评论

发布
暂无评论
ABAP 和 Java 的单元测试 Unit Test