测试--错误java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=select], {ExactMatche...

本文详细解析了在使用JUnit进行单元测试时遇到的“Notestsfound”异常问题,主要原因是测试方法上缺少@Test注解。通过添加@Test注解,可以有效解决此问题,确保测试方法能够被正确识别和执行。
异常这个错误
java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=select], {ExactMatcher:fDisplayName=select(com.rjj.demo.DemoApplicationTests)],
{LeadingIdentifierMatcher:fClassName=com.rjj.demo.DemoApplicationTests,fLeadingIdentifier=select]] from org.junit.internal.requests.ClassRequest@38c6f217 at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:83) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:74) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:49) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:525) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)

 

代码是这里的,

其他方法都是对的,这里主要是缺少测试注解  @Test  加上就好了

转载于:https://www.cnblogs.com/renjianjun/p/9728491.html

<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]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值