使用idea创建可执行的jar包并执行测试——Aspose.Word for Java

文章介绍了如何使用Aspose.WordforJava进行单元测试的打包和执行,包括编写test.xml文件来包含所有测试类,并展示了打包成jar的步骤。在国产化环境下,作者关注Aspose的稳定性和可能存在的native调用问题。执行测试后发现有失败的用例,但具体原因未详述。
摘要由CSDN通过智能技术生成

引入

最近公司有用到apose这款商业软件来处理word水印绘制,除了付费问题,aspose是否能在国产化环境下稳定运行也是一个问题(会不会调用native),对于我们来说,如果有影响,需要优先考虑POI。

Aspose.Word for Java

官方仓库: Aspose.Words for Java

这里主要介绍一下,如何把官方提供的单元测试打包成jar再执行。

官方的单元测试用到的框架是TestNG,具体不多做介绍。不过官方仓库没有提供可执行的套件xml,所以需要自己写一份。我再后面会提供一个简单的test.xml

打包具体步骤:

  1. 从官网上把测试用例克隆下来(最后打包ApiExamples就行)在这里插入图片描述
  2. 本地使用idea打开(我使用的是idea 2022)
    在这里插入图片描述
  3. 添加一个test.xml文件
    我这个比较简单,就是包含所有的测试类,可以自己自定义
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Testing Google Apps">
    <test name="Regression">
        <classes>
            <class name="Examples.ExAbsolutePositionTab"/>
            <class name="Examples.ExBookmarks"/>
            <class name="Examples.ExBookmarksOutlineLevelCollection"/>
            <class name="Examples.ExBorder"/>
            <class name="Examples.ExBorderCollection"/>
            <class name="Examples.ExBuildingBlocks"/>
            <class name="Examples.ExBuildVersion"/>
            <class name="Examples.ExCellFormat"/>
            <class name="Examples.ExCertificateHolder"/>
            <class name="Examples.ExCharts"/>
            <class name="Examples.ExChmLoadOptions"/>
            <class name="Examples.ExCleanupOptions"/>
            <class name="Examples.ExComment"/>
            <class name="Examples.ExCompatibilityOptions"/>
            <class name="Examples.ExControlChar"/>
            <class name="Examples.ExDigitalSignatureCollection"/>
            <class name="Examples.ExDigitalSignatureUtil"/>
            <class name="Examples.ExDocSaveOptions"/>
            <class name="Examples.ExDocument"/>
            <class name="Examples.ExDocumentBase"/>
            <class name="Examples.ExDocumentBuilder"/>
            <class name="Examples.ExDocumentBuilderImages"/>
            <class name="Examples.ExDocumentProperties"/>
            <class name="Examples.ExDocumentVisitor"/>
            <class name="Examples.ExDotNetVsJava"/>
            <class name="Examples.ExDrawing"/>
            <class name="Examples.ExEditableRange"/>
            <class name="Examples.ExField"/>
            <class name="Examples.ExFieldOptions"/>
            <class name="Examples.ExFile"/>
            <class name="Examples.ExFont"/>
            <class name="Examples.ExFontSettings"/>
            <class name="Examples.ExFormFields"/>
            <class name="Examples.ExHeaderFooter"/>
            <class name="Examples.ExHtmlFixedSaveOptions"/>
            <class name="Examples.ExHtmlLoadOptions"/>
            <class name="Examples.ExHtmlSaveOptions"/>
            <class name="Examples.ExHyphenation"/>
            <class name="Examples.ExImage"/>
            <class name="Examples.ExImageSaveOptions"/>
            <class name="Examples.ExInline"/>
            <class name="Examples.ExInlineStory"/>
            <class name="Examples.ExLayout"/>
            <class name="Examples.ExLicense"/>
            <class name="Examples.ExLists"/>
            <class name="Examples.ExLoadOptions"/>
            <class name="Examples.ExMailMerge"/>
            <class name="Examples.ExMailMergeCustom"/>
            <class name="Examples.ExMailMergeEvent"/>
            <class name="Examples.ExMarkdownSaveOptions"/>
            <class name="Examples.ExMetered"/>
            <class name="Examples.ExMossDoc2Pdf"/>
            <class name="Examples.ExMossRtf2Docx"/>
            <class name="Examples.ExNode"/>
            <class name="Examples.ExNodeImporter"/>
            <class name="Examples.ExOdtSaveOptions"/>
            <class name="Examples.ExOoxmlSaveOptions"/>
            <class name="Examples.ExPageSetup"/>
            <class name="Examples.ExParagraph"/>
            <class name="Examples.ExParagraphFormat"/>
            <class name="Examples.ExPclSaveOptions"/>
            <class name="Examples.ExPdfSaveOptions"/>
            <class name="Examples.ExPlainTextDocument"/>
            <class name="Examples.ExPsSaveOptions"/>
            <class name="Examples.ExRange"/>
            <class name="Examples.ExRenameMergeFields"/>
            <class name="Examples.ExRendering"/>
            <class name="Examples.ExReplaceHyperlinks"/>
            <class name="Examples.ExReportingEngine"/>
            <class name="Examples.ExRevision"/>
            <class name="Examples.ExRtfLoadOptions"/>
            <class name="Examples.ExRtfSaveOptions"/>
            <class name="Examples.ExSavingCallback"/>
            <class name="Examples.ExSection"/>
            <class name="Examples.ExShape"/>
            <class name="Examples.ExSignDocumentCustom"/>
            <class name="Examples.ExSmartTag"/>
            <class name="Examples.ExStructuredDocumentTag"/>
            <class name="Examples.ExStyles"/>
            <class name="Examples.ExSvgSaveOptions"/>
            <class name="Examples.ExTable"/>
            <class name="Examples.ExTableColumn"/>
            <class name="Examples.ExTabStop"/>
            <class name="Examples.ExThemes"/>
            <class name="Examples.ExTxtLoadOptions"/>
            <class name="Examples.ExTxtSaveOptions"/>
            <class name="Examples.ExUtilityClasses"/>
            <class name="Examples.ExVariableCollection"/>
            <class name="Examples.ExVbaProject"/>
            <class name="Examples.ExViewOptions"/>
            <class name="Examples.ExWordML2003SaveOptions"/>
            <class name="Examples.ExXamlFixedSaveOptions"/>
            <class name="Examples.ExXamlFlowSaveOptions"/>
            <class name="Examples.ExXpsSaveOptions"/>
        </classes>
    </test> <!-- Test -->
</suite> <!-- Suite -->
  1. 因为需要用控制台执行jar包,给工程添加一个入口类
    我这个就是调套件执行
public class TestEntrance {
    public static void main(String[] args) {
        TestNG testNG = new TestNG();
        List<String> suites = new ArrayList<>();
        suites.add("test.xml");//此处为xml的绝对路径
        testNG.setTestSuites(suites);
        testNG.run();
    }
}
  1. 打开file -> project structure -> artifacts,添加一个jar
    在这里插入图片描述
    选择module和Main Class,Main Class就选上面提供的TestEntrance,勾选上include tests
    在这里插入图片描述
    然后一路ok,创建artifact
  2. 编译artifact,build -> build artifacts
  3. 然后去文件夹下找打包好的jar,把上面提供的test.xml,放在与jar包同级的目录下
    在这里插入图片描述
  4. 执行【java -jar …/ApiExamples-Tests.jar】
  5. 执行结果:在这里插入图片描述
    我这里执行,发现失败的用例有很多,但是具体原因还没找到,欢迎分享。

可能遇到的问题

报错:

java.lang.SecurityException: Invalid signature file digest for Manifest main attributes

解决方案:https://www.jianshu.com/p/cd1f1b33a41a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值