[软件工程]词频统计的自动测试

对2018软件工程课程编写的关于个人作业-词频统计的自动化测试。主要就是根据大家作业的GitHub项目进行下载,然后对其自动化测试。

初期是打算用c++编写的(因为我的测试也是根据c++代码生成的exe进行测试的),但是因为根据GitHub作业链接这一部分之前有用java写过,而且c++也没有这方便比较好的第三方库,所以索性就用java写了。

在写java的时候,遇到的一个问题就是为了不启动VS的IDE来执行VS,即用命令行执行VS来生成exe,我们需要首先执行vs自带的vcvars32.bat来配置该exe所需的环境变量等(该bat文件的作用其实是根据用户的平台来选择不同的环境配置文件,不执行的话直接cl.exe会报错)。然后我从一个Stack Overflow的回答中找到了将这两个步骤封装成一个批处理文件的操作,https://stackoverflow.com/questions/84404/using-visual-studios-cl-from-a-normal-command-line 起初我打算是直接在java里调用这个批处理文件的,但遇到的困难是:配置环境变量+调用cl.exe这两件事在cmd里可以,但在java调用就会GG,还是会报vs某include的文件没有声明。找了很久也没找到对策。于是就把自动编译生成exe这个步骤单独地拎出来了,即不在java里执行这一步骤。因此最终的流程大概就是:java下载仓库->批处理生成exe->java测试得分。

批处理的脚本还踩的坑是,这个脚本在执行完会直接cd到C:\users..\source,相当于直接从我们的项目路径跑到了别的地方。所以在执行完vs的bat后,需要再cd回来。具体课件bat脚本如下:

记录一些踩坑记录:

  1. 生成jar包时,首先是需要一个MANIFEST.MF来指定主类,否则就会报“没有主清单属性”的错误。然后在改文件中还需要指定相关的jar包的路径,这个路径不可以用正则,且必须要每个jar包都列举(即不能列举lib)我配置的MANIFEST.MF文件如下:

MANIFEST文件是一个包含jar文件相关信息的文件。

  1. 关于报log4j:WARN No appenders could be found for logger (org.eclipse.jgit.util.FS).
    log4j:WARN Please initialize the log4j system properly.
    的警告

    参考这篇博客 即编写一个log4j.properties指定log4j的打印属性。

  2. 生成jar文件。命令行中我们参考jar的帮助文档,直接利用我们已生成的class文件。

    “使用现有的清单文件 ‘mymanifest’ 并将 foo/ 目录中的所有文件归档到 ‘classes.jar’ 中:
    jar cvfm classes.jar mymanifest -C foo/ .”

    命令如下:jar cvfm zy3.jar MANIFEST.MF -C bin/ . 然后就可以生成相应的jar文件,我们就可以用java -jar zy3.jar来运行相应文件了。

    在eclipse中可以采用export并指定MANIFEST文件达到相同目的。

关于CL环境变量的msdn官方文档:https://msdn.microsoft.com/zh-cn/library/3b2e7499.aspx

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注