我想检查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
答案 0 :(得分: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>
查询返回
的每个类不确定条件是否足以避免误报,如果我们错过了某些内容,请尝试再回到这里。