解决JUnit测试中: java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=testSave]出现的问题

本文分享了在运行Hibernate框架的测试类时遇到的错误及其解决办法,主要原因是未使用@Test注解标记测试方法,此外还提到了可能的类导入和保存问题。

当我运行hibernate框架时自己写的一个测试类的时候出现了以下的错误

撒

 导致这个错误的原因就是忘记在方法的前面加上@Test注解了,加上问题就解决了

 

撒

 还有一个有可能是没有保存  也有可能是没有导入类

我是没有加@test  嘻嘻

 

<think>我们正在处理一个关于JUnit测试执行时出现的错误:`java.lang.Exception: No tests found matching ...`。根据引用[2]中的信息,这个问题可能与测试方法没有声明为静态(static)有关,尤其是在使用`@BeforeClass`和`@AfterClass`注解时,因为这些方法必须是静态的。此外,错误信息中提到了具体的测试方法名称和测试类,因此我们需要检查这些测试方法是否正确定义。 错误信息的关键部分: - 测试方法名:`test_FIN_DRAWDOWN_AMOUNT_ASC` - 测试类:`com.ccbscf.biz.integration.edt.service.impl.EdtBizServiceImplTest_byAI` 可能的原因及解决方法: 1. **测试方法未声明为public**:JUnit要求测试方法必须是public的。请确保测试方法有`public`修饰符。 ```java @Test public void test_FIN_DRAWDOWN_AMOUNT_ASC() { // 测试代码 } ``` 2. **测试方法被错误地标记为静态**:测试方法(用`@Test`注解的方法)不应该声明为静态的。但是,`@BeforeClass`和`@AfterClass`注解的方法必须是静态的。请检查: - 测试方法(`@Test`)不能是`static`的。 - `@BeforeClass`和`@AfterClass`注解的方法必须是`static`的。 3. **测试方法名称不匹配**:错误信息中提到的测试方法名称是`test_FIN_DRAWDOWN_AMOUNT_ASC`,请检查测试类中是否确实存在这个方法,并且方法名拼写完全一致(包括大小写)。 4. **测试类未正确加载**:错误信息中提到了`ClassRequest`,这可能是由于类路径问题导致测试类无法加载。请确保测试类在类路径中,并且包路径正确。 5. **依赖缺失**:错误信息中提到了`nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/FormatFeature`,这表明缺少Jackson库的某个类。请确保项目中包含了Jackson库的相应版本。可以在构建工具(如Maven或Gradle)中添加依赖。 Maven依赖示例(根据实际需要选择版本): ```xml <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.12.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.3</version> </dependency> ``` 6. **JUnit版本问题**:不同版本的JUnit测试方法的要求可能略有不同。确保使用的JUnit版本与项目兼容。 7. **IDE配置问题**:如果是在IDE中运行测试,尝试清理并重新构建项目,或者重启IDE。 8. **测试方法参数问题**:JUnit 4的测试方法不能有参数。如果测试方法有参数,会导致找不到测试方法。 9. **测试类没有公共构造器**:测试类必须有一个公共的无参构造器。 根据引用[2]中的经验,特别要注意`@BeforeClass`和`@AfterClass`注解的方法必须是静态的,而测试方法(`@Test`)不能是静态的。 因此,建议的解决步骤: 步骤1:检查测试方法`test_FIN_DRAWDOWN_AMOUNT_ASC`的修饰符,确保它是`public`且非`static`。 步骤2:检查测试类中`@BeforeClass`和`@AfterClass`注解的方法是否是`public static`。 步骤3:确保测试类`EdtBizServiceImplTest_byAI`是公共的(`public`)。 步骤4:检查项目依赖,确保Jackson库存在且版本正确。 步骤5:如果问题仍然存在,尝试清理项目并重新构建。 如果以上步骤不能解决问题,请提供更多关于测试类的代码片段,以便进一步分析。 根据用户提供的引用信息,我们主要参考了引用[2]中关于静态方法的要求,以及引用[1]中提到的类缺失问题(这里具体是Jackson库的类缺失)。 希望这些方法能帮助您解决问题。</think>### 解决 Java 中 `java.lang.Exception: No tests found matching` 错误的方法 该错误通常由 JUnit 无法识别测试方法导致。结合您提供的错误信息和引用内容,以下是系统性的解决方案: --- #### **1. 检查测试方法修饰符** **核心问题**:JUnit 要求 `@Test` 方法必须是 `public` 且**非静态**,而 `@BeforeClass/@AfterClass` 必须是 `static`。 **解决方法**: ```java // ✅ 正确示例 public class EdtBizServiceImplTest_byAI { @BeforeClass public static void setupClass() { /* 静态方法 */ } // 必须 static @Test public void test_FIN_DRAWDOWN_AMOUNT_ASC() { // 必须 public 且非 static // 测试逻辑 } } ``` **验证点**: - 确认测试方法无 `static` 关键字 - 检查 `@BeforeClass/@AfterClass` 方法有 `static` 修饰符[^2] --- #### **2. 解决依赖缺失问题** **错误关键信息**: `nested exception is java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/FormatFeature` **解决方法**: 在 `pom.xml` 中添加 Jackson 依赖: ```xml <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.13.0</version> <!-- 根据需求调整版本 --> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.13.0</version> </dependency> ``` **执行步骤**: 1. 运行 `mvn clean install` 2. 检查 IDE 的依赖库是否成功加载 Jackson --- #### **3. 检查测试方法命名和注解** **常见陷阱**: - 方法名拼写错误(如大小写不一致) - 缺少 `@Test` 注解 - 测试类未标记为 `public` **验证步骤**: 1. 确认方法名完全匹配:`test_FIN_DRAWDOWN_AMOUNT_ASC` 2. 确保测试类声明为 `public class EdtBizServiceImplTest_byAI` 3. 检查方法注解无遗漏: ```java import org.junit.Test; // 正确导入注解 @Test // 必须有此注解 public void test_FIN_DRAWDOWN_AMOUNT_ASC() { ... } ``` --- #### **4. 清理构建缓存** **操作流程**: 1. **Maven 项目**:执行 `mvn clean test` 2. **Gradle 项目**:执行 `gradle cleanTest test` 3. **IDE 操作**: - IntelliJ:`Build > Rebuild Project` - Eclipse:`Project > Clean` --- #### **5. 检查测试运行配置** **潜在问题**: - 使用了错误的测试运行器(如误选 JUnit 3) - 测试目录未被正确标记为 `Test Sources Root` **解决方案**: 1. 在 IDE 中右键点击测试目录 → 选择 `Mark Directory as > Test Sources Root` 2. 检查运行配置: ```java @RunWith(JUnit4.class) // 明确指定运行器 public class EdtBizServiceImplTest_byAI { ... } ``` --- ### 总结流程图 ```mermaid graph TD A[出现 No tests found 错误] --> B{检查测试方法} B --> |非public/static| C[修正方法修饰符] B --> |命名错误| D[校正方法名和注解] A --> E{检查依赖} E --> |NoClassDefFoundError| F[添加缺失依赖] A --> G{清理环境} G --> H[执行clean并重建项目] A --> I{验证配置} I --> J[标记测试目录/检查运行器] ``` 通过以上步骤,90% 的类似错误可被解决。若问题仍存在,请检查项目 SDK 版本是否与依赖兼容[^1][^2]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值