发送邮件中@BeforeClass不执行

本文探讨了JUnit4中@BeforeClass注解不生效的问题及解决方案,指出若测试类继承了TestCase类,则所有Annotation将失效。此外,还分析了邮件发送过程中出现javax.mail.AuthenticationFailedException异常的原因。
1.Juint4 @BeforeClass不执行
@BeforeClass和@AfterClass是JUnit4得新特性,标记有@BeforeClass的方法会载所有的测试方法执行开始前运行,标记有@AfterClass的方法会在所有的测试方法运行结束后执行。
可是在运行的时候,始终无法通过。仔细检查代码,原因是测试类继承了TestCase类。在JUnit4中,如果测试类继承了TestCase类,那么所有的Annotation都不会起作用。在上面的例子中,所有的Annotation都不起作用了,但是testMethodA的命名符合TestCase中测试方法的规范,所以该方法还是会被执行,但是由于createTestData没有执行,测试数据没有被创建,方法执行当然会失败。 修改方法,只要去掉extends TestCase即可。

2.在写发送邮件中异常 javax.mail.AuthenticationFailedException
有可能是你的邮箱里面设置的POP3/SMTP 没有打开
### JUnit4 中 `@BeforeClass` 注解的作用及执行顺序 #### 1. `@BeforeClass` 的作用 `@BeforeClass` 是 JUnit 提供的一个注解,用于标记一个公共静态方法。该方法会在整个测试类被加载时仅执行一次,并且是在任何测试方法运行之前完成初始化工作[^3]。它通常用来执行一些只需要一次性准备的操作,比如数据库连接、资源分配或者全局配置的设置。 需要注意的是,由于此方法只被执行一次,因此它的实现逻辑应确保线程安全以及适合共享环境下的操作。 #### 2. 执行顺序 JUnit 测试用例的标准执行流程如下所示: - **`@BeforeClass`**: 整个测试生命周期的第一步,在所有其他标注的方法(如 `@Before`, `@Test` 等)之前调用。 - 接着依次是: - **`@Before`**: 每次在单个 `@Test` 方法前都会触发。 - **`@Test`**: 实际的测试逻辑所在位置。 - **`@After`**: 单个 `@Test` 方法完成后立即执行清理动作。 - 最终一步则是: - **`@AfterClass`**: 类似于 `@BeforeClass`,但在所有的测试结束后才会执行一次,主要用于释放资源或关闭连接等收尾工作[^1]。 以下是基于上述描述的一个典型例子来展示这些阶段如何协作工作的代码片段: ```java import org.junit.*; public class ExampleTest { @BeforeClass public static void setUpOnce() { System.out.println("@BeforeClass - Run once before all tests"); } @Before public void setUpEach() { System.out.println("@Before - Runs before each test method"); } @Test public void testCaseOne() { System.out.println("@Test - Test Case One is running..."); } @Test public void testCaseTwo() { System.out.println("@Test - Test Case Two is running..."); } @After public void tearDownEach() { System.out.println("@After - Runs after each test method"); } @AfterClass public static void tearDownOnce() { System.out.println("@AfterClass - Run once after all tests"); } } ``` 当运行以上程序时, 输出将严格遵循定义好的顺序显示各个部分何时启动与结束. --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值