0

我想检查 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
4

1 回答 1

0

我假设您正在使用规则,即概念和约束。因此,我建议使用预定义的概念“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>

查询返回每个类

  • 不是测试代码
  • 不是抽象的,即具体的
  • 并且不存在调用该类的任何方法的测试方法

不确定条件是否足以避免误报,试一试,如果我们错过了什么,请回到这里。

于 2015-09-28T10:57:16.623 回答