Невозможно запустить тесты каратэ - файл функции не найден

Я получаю сообщение об ошибке: функции или сценарии не найдены.

Изначально я написал свою функцию, но после неоднократных неудач я попытался скопировать весь каталог src/test/java из демо-проекта каратэ, сгенерированного с использованием архетипа, и удалил свои собственные файлы, но то, что там работает, не работает в моем собственном проекте.

Зависимость в моем pom, которая также совпадает с демонстрационным проектом:

<dependency>
    <groupId>com.intuit.karate</groupId>
    <artifactId>karate-junit5</artifactId>
    <version>1.3.1</version>
</dependency>

Я запускаю UsersRunner.java. Ниже приведена ошибка:

org.opentest4j.AssertionFailedError: no features or scenarios found: [classpath:examples/users]
at com.intuit.karate.junit5.Karate.iterator(Karate.java:72)

надеюсь, кто-то еще может помочь здесь, но, по моему мнению, вы что-то упустили из архетипа, который только вы можете понять. если maven и архетип слишком сложны, вы можете использовать плагин кода VS (который объединяет среду выполнения карате) и запустить файлы функций: marketplace.visualstudio.com/items?itemName=karatelabs.karat‌​e

Peter Thomas 10.04.2023 07:51

Спасибо, Питер, я с нетерпением жду работы над идеей и ее запуска, как я объясню ниже: я переместил users.feature прямо в каталог java. Теперь я могу запустить его с абсолютным путем — /users/xploreraj/repo/myProject/ftModule, но не с «путем к классам:», который должен быть способом введения тестов в мой проект. Должен ли «classpath:» разрешаться в путь до модуля ft, поскольку тестовые программы находятся внутри этого модуля?

xploreraj 10.04.2023 13:08

все зависит от того, как настроен ваш проект. да, обычно папка src/test/java должна быть корнем classpath:, обратитесь к документации: github.com/karatelabs/karate#classpath - если вы все еще застряли и вам нужна помощь, следуйте этому процессу: github.com/ karatelabs/karate/wiki/Как отправить сообщение

Peter Thomas 10.04.2023 13:27

Я исправил проблему и добавил ответ на вопрос. Еще раз, спасибо :)

xploreraj 10.04.2023 13:45
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
4
119
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение состоит в том, чтобы сообщить Maven, чтобы он указывал на src/test/java, а не на src/test/resources по умолчанию, как описано здесь: https://github.com/karatelabs/karate#folder-structure

<build>
    <testResources>
        <testResource>
            <directory>src/test/java</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </testResource>
    </testResources>        
    <plugins>
    ...
    </plugins>
</build>

И тогда Karate.run("classpath:<path_to_feature_directory_or_file>") будет работать правильно.

Я смог понять это только после того, как использовал абсолютный путь для отладки проблемы. Надеюсь, это поможет другим.

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