请教:单元测试运行找不到类问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
palmers

请教:单元测试运行找不到类问题

  •  
  •   palmers Aug 19, 2021 2103 views
    This topic created in 1715 days ago, the information mentioned may be changed or developed.

    代码目录结构是这样的:

    ├─src │ ├─main │ │ └─java │ │ └─com │ │ └─xx Sample.java │ └─test │ └─java │ └─com │ └─xx SampleTest.java 

    设置 src/main/java 目录为 Source root, src/test/java 为 test source root SampleTest.java 测试类中有调用 Sample 类中的方法 当我运行 SampleTest 单元测试方法时,提示找不到 com.xx.Sample.java 请问 这是为什么呢?依赖项目其他模块代码也是找不到类 在 IDEA 中,不会提示编译错误,只有运行时,在 testCompile 阶段提示找不到类,在跳过测试构建是正常的 运行测试使用的本地 maven 仓库已经指向了我使用的本地仓库(从 debug 日志中看到)

    请大家帮帮我 谢谢大家了

    Supplement 1    Aug 20, 2021

    问题已经解决了!谢谢大家! 原因: maven插件maven-compiler-plugin配置问题导致 插件maven-compiler-plugin 配置

    <configuration> <skipMain>true</skipMain> </configuration> 

    我专门查询了插件 maven-compiler-plugin 该配置,是为了不编译main sources 文档: https://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html

    <skipMain> boolean 2.0 Set this to 'true' to bypass compilation of main sources. Its use is NOT RECOMMENDED, but quite convenient on occasion. User property is: maven.main.skip. 

    至此,问题得到解决,由于自己对maven项目结构规范和使用插件以及maven插件生命周期不够熟悉,导致这期间我尝试修改test目录结构和添加pom配置 都是围绕 test来做 所以一直没能解决问题

    9 replies    2021-08-20 08:53:06 +08:00
    sutra
        1
    sutra  
       Aug 19, 2021
    贴出 mvn test 的输出大概会简单点。
    palmers
        2
    palmers  
    OP
       Aug 19, 2021
    源码:
    palmers
        3
    palmers  
    OP
       Aug 19, 2021
    ```java
    public class MethClazzTest {

    @Test
    public void sayHello() {
    new MethClazz().sayHello();
    }
    }
    ```

    ```
    $ mvn test
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Build Order:
    [INFO]
    [INFO] unit-testing [pom]
    [INFO] test-module [jar]
    [INFO]
    [INFO] ----------------------< org.example:unit-testing >----------------------
    [INFO] Building unit-testing 1.0-SNAPSHOT [1/2]
    [INFO] --------------------------------[ pom ]---------------------------------
    [INFO]
    [INFO] ----------------------< org.example:test-module >-----------------------
    [INFO] Building test-module 1.0-SNAPSHOT [2/2]
    [INFO] --------------------------------[ jar ]---------------------------------
    [INFO]
    [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ test-module ---
    [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
    [INFO] Copying 0 resource
    [INFO]
    [INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ test-module ---
    [INFO] Not compiling main sources
    [INFO]
    [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ test-module ---
    [WARNING] Using platform encoding (GBK actually) to copy filtered resources, i.e. build is platform dependent!
    [INFO] skip non existing resourceDirectory E:\projects\unit-testing\test-module\src\test\resources
    [INFO]
    [INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ test-module ---
    [INFO] Changes detected - recompiling the module!
    [WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent!
    [INFO] Compiling 1 source file to E:\projects\unit-testing\test-module\target\test-classes
    [INFO] -------------------------------------------------------------
    [ERROR] COMPILATION ERROR :
    [INFO] -------------------------------------------------------------
    [ERROR] /E:/projects/unit-testing/test-module/src/test/java/org/example/d1/MethClazzTest.java:[14,13] 找不到符号
    符号: 类 MethClazz
    位置: 类 org.example.d1.MethClazzTest
    [INFO] 1 error
    [INFO] -------------------------------------------------------------
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Summary:
    [INFO]
    [INFO] unit-testing 1.0-SNAPSHOT .......................... SUCCESS [ 0.040 s]
    [INFO] test-module 1.0-SNAPSHOT ........................... FAILURE [ 3.981 s]
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 4.484 s
    [INFO] Finished at: 2021-08-19T20:03:02+08:00
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:testCompile (default-testCompile) on project test-module: Compilation failure
    [ERROR] /E:/projects/unit-testing/test-module/src/test/java/org/example/d1/MethClazzTest.java:[14,13] 找不到符号
    [ERROR] 符号: 类 MethClazz
    [ERROR] 位置: 类 org.example.d1.MethClazzTest
    [ERROR]
    [ERROR] -> [Help 1]
    [ERROR]
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
    [ERROR]
    [ERROR] After correcting the problems, you can resume the build with the command
    [ERROR] mvn <goals> -rf :test-module

    ```
    palmers
        4
    palmers  
    OP
       Aug 19, 2021
    @sutra 日志就是上面这样的
    sutra
        5
    sutra  
       Aug 19, 2021
    pom.xml 贴出来看看。
    sutra
        6
    sutra  
       Aug 19, 2021
    [INFO] unit-testing 1.0-SNAPSHOT .......................... SUCCESS [ 0.040 s]
    [INFO] test-module 1.0-SNAPSHOT ........................... FAILURE [ 3.981 s]

    你这好像放在两个 maven project 里,然后没有写依赖吧?
    palmers
        7
    palmers  
    OP
       Aug 20, 2021
    @sutra unit-testing 是 test-module 的父模块 然后单元测试在 test-module 模块中
    palmers
        8
    palmers  
    OP
       Aug 20, 2021
    ```xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>unit-testing</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
    <module>test-module</module>
    </modules>

    <properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.10</version>
    <scope>test</scope>
    </dependency>
    </dependencies>

    <build>
    <pluginManagement>
    <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
    <skipMain>true</skipMain>
    </configuration>
    </plugin>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.22.2</version>
    </plugin>
    <plugin>
    <groupId>org.jacoco</groupId>
    <artifactId>jacoco-maven-plugin</artifactId>
    <version>0.8.2</version>
    <executions>
    <execution>
    <goals>
    <goal>prepare-agent</goal>
    </goals>
    </execution>
    <!-- attached to Maven test phase -->
    <execution>
    <id>report</id>
    <phase>test</phase>
    <goals>
    <goal>report</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    </plugins>
    </pluginManagement>
    </build>
    </project>
    ```
    palmers
        9
    palmers  
    OP
       Aug 20, 2021
    test-module 模块
    ```xml
    <parent>
    <artifactId>unit-testing</artifactId>
    <groupId>org.example</groupId>
    <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>test-module</artifactId>

    <properties>
    <maven.compiler.source>8</maven.compiler.source>
    <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
    <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.10</version>
    <scope>test</scope>
    </dependency>
    </dependencies>
    ```
    About     Help     Advertise     Blog     API     FAQ     Solana     959 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 19:02 PVG 03:02 LAX 12:02 JFK 15:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86