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 不够大。
把该数字调大后错误即解决。
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/ecae55cf4f3dc86fdc81fd588】。文章转载请联系作者。
评论