JUnit教程 -- JUnit注解


在本节中,我们将提到支持在JUnit4基本注释,下表列出了这些注释的概括:
注解 描述
@Test
public void method()
测试注释指示该公共无效方法它所附着可以作为一个测试用例。
@Before
public void method()
Before注释表示,该方法必须在类中的每个测试之前执行,以便执行测试某些必要的先决条件。
@BeforeClass
public static void method()
BeforeClass注释指出这是附着在静态方法必须执行一次并在类的所有测试之前。发生这种情况时一般是测试计算共享配置方法(如连接到数据库)。
@After
public void method()
After 注释指示,该方法在执行每项测试后执行(如执行每一个测试后重置某些变量,删除临时变量等)
@AfterClass
public static void method()
当需要执行所有的测试在JUnit测试用例类后执行,AfterClass注解可以使用以清理建立方法,(从数据库如断开连接)。注意:附有此批注(类似于BeforeClass)的方法必须定义为静态。
@Ignore
public static void method()
当想暂时禁用特定的测试执行可以使用忽略注释。每个被注解为@Ignore的方法将不被执行。

 
让我们看看一个测试类,在上面提到的一些注解的一个例子。

AnnotationsTest.java

package com.yiibai.junit;

import static org.junit.Assert.*;
import java.util.*;
import org.junit.*;

public class AnnotationsTest {

	private ArrayList testList;

	@BeforeClass
	public static void onceExecutedBeforeAll() {
		System.out.println("@BeforeClass: onceExecutedBeforeAll");
	}

	@Before
	public void executedBeforeEach() {
		testList = new ArrayList();
		System.out.println("@Before: executedBeforeEach");
	}

	@AfterClass
	public static void onceExecutedAfterAll() {
		System.out.println("@AfterClass: onceExecutedAfterAll");
	}

	@After
	public void executedAfterEach() {
		testList.clear();
		System.out.println("@After: executedAfterEach");
	}

	@Test
	public void EmptyCollection() {
		assertTrue(testList.isEmpty());
		System.out.println("@Test: EmptyArrayList");

	}

	@Test
	public void OneItemCollection() {
		testList.add("oneItem");
		assertEquals(1, testList.size());
		System.out.println("@Test: OneItemArrayList");
	}

	@Ignore
	public void executionIgnored() {

		System.out.println("@Ignore: This execution is ignored");
	}
}

如果我们运行上面的测试,控制台输出将是以下几点:

@BeforeClass: onceExecutedBeforeAll
@Before: executedBeforeEach
@Test: EmptyArrayList
@After: executedAfterEach
@Before: executedBeforeEach
@Test: OneItemArrayList
@After: executedAfterEach
@AfterClass: onceExecutedAfterAll
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java中的`@Test`是JUnit框架中的一个注解,用于标记测试方法。当在使用`@Test`注解的方法出现错误时,可能会出现以下几种情况: 1. `java.lang.Error:找不到或无法加载主类`:这种情况通常是因为JUnit库未正确引入或配置导致的。需要确保JUnit库已正确添加到项目的构建路径中,并且测试类中已正确导入JUnit的相关类。 2. `java.lang.AssertionError:期望值<xxx>但得到了<xxx>`:这种情况通常是因为测试方法在验证过程中出现了断言错误。测试方法使用断言语句来验证预期结果和实际结果是否一致,如果不一致则抛出此错误。需要检查断言语句是否正确,并且预期结果与实际结果是否匹配。 3. `java.lang.NullPointerException`:这种情况通常是因为测试方法中引用了一个空对象而导致的空指针异常。需要检查测试方法中是否正确初始化了需要使用的对象,并确保对象非空。 4. `java.lang.Exception`:这种情况通常是因为测试方法抛出了未捕获的异常。需要检查测试方法中是否正确处理了可能抛出的异常,并进行异常处理或捕获。 在解决这些问题时,可以参考以下几点: 1. 确保JUnit库的正确引入和配置。 2. 仔细检查用`@Test`注解标记的测试方法,并确认其中的断言语句和对象引用是否正确。 3. 检查测试方法中是否正确处理了可能的异常情况。 当以上方法无法解决问题时,可以根据完整的报错信息和具体情况进行更详细的排查和处理。 ### 回答2: 当在Java中使用 `@Test` 注解时,通常是因为使用了 JUnit 框架来编写和运行测试用例。在使用 `@Test` 注解时可能会遇到以下几种常见的错误: 1. 错误 - 找不到测试框架:这种错误通常是因为没有添加JUnit依赖库或者JUnit版本不兼容所致。需要确保在项目的构建配置文件(例如pom.xml或build.gradle)中正确地添加JUnit依赖,并且版本与项目的Java版本兼容。 2. 错误 - 无效的注解类型:这种错误通常是因为没有导入JUnit测试类或者没有正确引入JUnit的 `@Test` 注解。需要确保在测试类文件的顶部正确导入JUnit测试类,并且使用正确的 `@Test` 注解。 3. 错误 - 测试方法签名错误:这种错误通常是因为测试方法的签名不符合JUnit要求所致。测试方法应该是公共的(public)空(void)方法,并且不接受任何参数。需要确保测试方法的签名正确,并且没有任何语法错误。 4. 错误 - 没有测试运行程序:这种错误通常是因为没有使用JUnit来运行测试用例。需要确保在测试类文件或测试套件中使用JUnit提供的测试运行程序来运行测试用例。 解决以上可能的问题后,应该能够正确运行带有 `@Test` 注解测试用例,并获得需要的测试结果。 ### 回答3: 在Java中,"@test"通常是用来标记测试方法或测试类的注解。如果在使用"@test"注解时报错,可能是以下情况之一: 1. 缺少测试框架:在使用@Test注解之前,需要确保项目中引入了合适的测试框架,例如JUnit。可以在项目的构建文件(如pom.xml或build.gradle)中添加相应的测试依赖,然后重新构建项目。 2. 未导入测试框架类:如果已经引入了测试框架,但仍然报错,可能是因为未正确导入测试框架相关的类。例如,在JUnit中,需要导入org.junit.Test类。请检查代码中的导入语句,确保引入了正确的测试框架类。 3. 测试方法签名错误:使用@Test注解标记的方法必须遵循特定的命名和签名规则。例如,在JUnit中,测试方法必须是公共的、无返回值的方法,并且不带任何参数。请确保测试方法的签名符合所使用测试框架的规定。 4. 测试类命名错误:使用@Test注解标记的测试类必须以"Test"结尾,或者是以"Test"开头,后面跟着一个大写字母。例如,一个测试类可以命名为"MyClassTest"。请检查测试类的命名是否符合规定。 总之,当使用"@test"注解报错时,需要仔细检查测试框架的引入和导入、测试方法的命名和签名规则、以及测试类的命名是否正确。根据具体的错误信息,可以进一步定位问题并进行修复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值