junit TestSuite: исключение ClassNotFoundException

#java #ant #junit

#java #ant #junit

Вопрос:

Я получаю следующий код ошибки для запуска целевой программы junit в ant. EshopCoreTestSuite — это фреймворк, который:

 public class EshopCoreTestSuite extends TestSuite {

    public static Test suite() {
        TestSuite suite = new TestSuite();          
        suite.addTestSuite(CustomerContextTest.class);
        return suite;
    }
    public static void main(String[] args) {
         TestRunner.run(EshopCoreTestSuite.class);}  }
  

ошибка:

    <error message="com.bgc.EshopCoreTestSuite" type="java.lang.ClassNotFoundException">java.lang.ClassNotFoundException: com.bgc.EshopCoreTestSuite         ....        
        </error>
  

цель junit:

 <property name="COMP_TEST_SRC_DIR" location="test/java"/>
<property name="TEST_BUILD_DIR" location="build/test"/>
<property name="COMP_JAVA_SRC" location="src/java" />
<property name="COMP_BUILD" location="build" />
  

Я просто запутался здесь с path. У меня есть папка src и под этой папкой java и test для java и тестовых файлов. Я надеюсь, что я указал больше / неправильный путь.
….

 <junit printsummary="on" fork="on">
        <classpath>
        <path refid="CLASSPATH_JUNIT"/>
        <dirset dir="${TEST_SRC_DIR}"/>
        </classpath>
        <env key="app.module" path="ESW"/>
        <env key="app.env" path="DEV"/>
        <test name="com.bgc.EshopCoreTestSuite" todir="../../../BUILD/ESW/ESWBUILD/CI/REPORT" outfile="junit_report">
        <formatter type="xml"/>
        </test>
    </junit>
  

Комментарии:

1. ${TEST_SRC_DIR} выглядит подозрительно. у вас нет определенной переменной для каталога скомпилированного класса (output или bin)?

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

Ответ №1:

Попробуйте изменить:

  <dirset dir="${TEST_SRC_DIR}"/>
  

Для:

  <dirset dir="${TEST_BUILD_DIR}"/>
  

в этом <junit> разделе. Путь к классу должен содержать встроенные классы, а не исходные файлы. Если ваши классы генерируются для .../src/java , то используйте ${COMP_JAVA_SRC} вместо этого. (Но это немного нестандартно.)

Дело в том, что эта dirset переменная должна указывать на корень, в котором расположены ваши .class файлы.

Комментарии:

1. хм … где находится com/bgc/EshopCoreTestSuite.class файл, расположенный в вашей структуре каталогов?

2. bgc-esw-coresrctest и тестовые файлы под этим. bgc-esw-core src java, все файлы Java в этом пакете.

3. это .class файлы, на которые вам нужно указывать. они действительно в srcjava ?

4. извините, файлы классов расположены в bgc-esw-core/target/classes/com/bgc/EshopCoreTestSuite.class

5. затем присвоите свойству это значение (target/classes /), если у вас его еще нет, и используйте это в dirset значении.