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