如果在jUnit测试中发生需求验证,这是否正确

时间:2017-01-24 19:23:36

标签: java unit-testing junit static-analysis analyzer

我是having this logic to check a java file content and verify that it has a comment, which says who is the author(not necessarily the creator) of that file - 项目的特殊要求

我使用Junit编写了一个单元测试来检查逻辑,它运行正常。

我希望所有.java文件都符合该标准,并且如果其中至少有一个不符合该标准,则构建失败

到目前为止,我有Junit测试方法来执行以下操作,

  1. 阅读应用程序中的所有.java文件内容
  2. 对于每个内容检查它是否包含具有标准格式的评论
  3. 如果测试用例中至少有一个没有使用这种格式的评论(以便最终构建失败),则测试用例失败。
  4. 这是正确的做法吗? 它可以达到目的,但使用Junit测试进行一些验证工作是一种很好的做法。?

    如果没有,我应该使用什么样的方法来分析(使用我的逻辑 - 我有一个带逻辑的Analyzer.java文件)所有文件在构建时间并使构建成为成功如果所有文件都符合要求的标准。

    编辑: 代码评论检查只是一个验证。有几项检查需要完成。 (例如:变量名应该以给定的后缀结束,模式使用一些内部库等等)所有场景都在该逻辑中处理(Analyzer.java)。只需要检查所有java文件内容并使用该逻辑来验证它们。

    I have a java library and when invoked a method that accept a file name , check(fileName) , it will analyze the file and return true if it pass some invisible logic这样说是安全的。如果返回false,则构建失败。 因为我需要在构建失败的情况下使构建失败,所以我在jUnit测试中使用它来检查代码库中的所有.java文件。

    如果可以通过静态代码分析工具(但需要使用我拥有的逻辑)来完成,也可以接受。但我不知道现有的静态代码分析器是否支持这种自定义验证。

3 个答案:

答案 0 :(得分:2)

  

我使用的方法是否正确? ...使用junit测试进行一些验证工作是一种很好的做法

没有。单元测试用于检查代码单元的完整性,确保单元的行为正常工作。您不应该在单元测试中检查注释/文档。

  

因为如果事情不对,我需要让构建失败..

您需要在构建过程中添加更多步骤,更具体地说,是静态分析步骤。

单元测试被视为构建步骤,以及编译,执行和部署。您的项目需要一个额外的步骤,这将带我到以下...

您可以使用build tool(例如Apache Ant)为项目的构建添加步骤。虽然静态分析并没有捆绑(这只是一个构建自动化工具),但它确实允许您确保自定义构建步骤的构建失败失败。

话虽如此,您可以添加一个触发静态分析程序的步骤。 This page包含使用Ant创建多个构建步骤的示例,包括静态代码分析和错误检查。您甚至可以创建自己的分析器来使用。

有关构建工具和&amp ;;的更多信息自动化:

StackOverflow: What is a Build Tool?

Wiki: Software Build > Build Tools

Wiki: Build Automation

答案 1 :(得分:1)

你可以使用Checkstyle。 构建可以是failed。 检查comments。它被称为静态代码分析。

  

要定义作者标签或版本标签的格式,请将属性authorFormat或versionFormat分别设置为正则表达式。

答案 2 :(得分:1)

如果那是我的项目,那么我不会在标准的src / test / java中进行这种验证,而是作为应用程序测试套件的一部分运行。 单元测试套件应该测试生产逻辑而不是编码风格'检查。

此类验证的位置将是例如预先提交到git存储库。检查此(或样式检查工具)的所有脚本都将在该位置调用。

你可以将所有东西放在一个地方,但据我所知,软件开发所有领域的关注点分离是相当长一段时间的主要趋势..并且有一个很好的指标