Java 验证src中是否存在来自测试的包

Java 验证src中是否存在来自测试的包,java,jqassistant,Java,Jqassistant,我想检查src中是否存在来自测试的包。例如,如果我的测试在my.package.customer中,我想验证src中是否有具有该名称的包。到目前为止,我尝试了以下查询。该查询将返回(我希望)所有条目,其中至少有一个测试依赖的类来自同一个包。这对我有用。剩下的问题是,我不知道如何将此作为jqassistant约束使用,因为如果此查询的计数为0,则目标应该失败 MATCH (package:Package)-[:CONTAINS]->(classInPackage:Class),

我想检查src中是否存在来自测试的包。例如,如果我的测试在my.package.customer中,我想验证src中是否有具有该名称的包。到目前为止,我尝试了以下查询。该查询将返回(我希望)所有条目,其中至少有一个测试依赖的类来自同一个包。这对我有用。剩下的问题是,我不知道如何将此作为jqassistant约束使用,因为如果此查询的计数为0,则目标应该失败

MATCH
    (package:Package)-[:CONTAINS]->(classInPackage:Class),
    (classInPackage:Type)-[:DECLARES]->(aMethod:Method),
    (aMethod)-[:ANNOTATED_BY]->()-[:OF_TYPE]->(testAnnotationType:Type),
    (classInPackage)-[DEPENDS_ON]->(anotherClass:Type:Class),
    (depPackage:Package)-[:CONTAINS]->(anotherClass)                
WHERE
    package.fqn = depPackage.fqn
RETURN
    classInPackage.fqn, anotherClass.fqn, depPackage.fqn

我假设您使用的是规则,即概念和约束。因此,我建议使用预定义的概念“junit4:TestMethod”将事情分解开来,它将标签“junit4”和“Test”添加到每个带有@Test:

<constraint id="my-rule:EveryClassMustHaveAUnitTest">
  <requiresConcept refId="junit4:TestMethod" />
  <description>For every class there must be at least one unit test.</description>
  <cypher><![CDATA[
  MATCH
    (a:Artifact)-[:CONTAINS]->(c:Type:Class)
  WHERE
    a.type <> "test-jar"
    and not has(c.abstract)
    and not (:Test:Method)-[:INVOKES]->(:Method)<-[:DECLARES]-(c)
  RETURN
    c.fqn

  ]]>
  </cypher>
</constraint>

对于每个类,必须至少有一个单元测试。
(c:类型:类别)
哪里
a、 类型“testjar”
而没有(c.摘要)
而不是(:Test:Method)-[:INVOKES]->(:Method)
该查询返回每个

  • 这不是测试代码
  • 不是抽象的,即具体的
  • 并且不存在调用该类的任何方法的测试方法
不确定条件是否足以避免误报,请尝试一下,如果我们错过了什么,请回到这里