Проверьте, существует ли пакет из теста в src

Я хотел бы проверить, существует ли пакет из тестов в 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

1 ответ

Я предполагаю, что вы работаете с правилами, т.е. понятиями и ограничениями. Поэтому я бы рекомендовал разделить вещи, используя предопределенную концепцию "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>

Запрос возвращает каждый класс, который

  • это не тестовый код
  • не абстрактный, т.е. конкретный
  • и не существует тестового метода, который бы вызывал какой-либо метод этого класса

Не уверены, что условий достаточно, чтобы избежать ложных срабатываний, попробуйте и вернитесь сюда, если мы что-то пропустили.

Другие вопросы по тегам