`
javaboy2006
  • 浏览: 186286 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

junit3为何只能跑public void testXXX()声明方法

阅读更多
junit完整生命周期时序图

在图中第2步调用TestSuite构造方法时,代码如下:
	 public TestSuite(final Class theClass) {
		fName= theClass.getName();
		try {
			getTestConstructor(theClass); // Avoid generating multiple error messages
		} catch (NoSuchMethodException e) {
			addTest(warning("Class "+theClass.getName()+" has no public constructor TestCase(String name) or TestCase()"));
			return;
		}

		if (!Modifier.isPublic(theClass.getModifiers())) {
			addTest(warning("Class "+theClass.getName()+" is not public"));
			return;
		}

		Class superClass= theClass;
		Vector names= new Vector();
		while (Test.class.isAssignableFrom(superClass)) {
			Method[] methods= superClass.getDeclaredMethods();
			for (int i= 0; i < methods.length; i++) {
				addTestMethod(methods[i], names, theClass);
			}
			superClass= superClass.getSuperclass();
		}
		if (fTests.size() == 0)
			addTest(warning("No tests found in "+theClass.getName()));
	}

addTestMethod()方法代码如下:
	private void addTestMethod(Method m, Vector names, Class theClass) {
		String name= m.getName();
		if (names.contains(name))
			return;
		if (! isPublicTestMethod(m)) {
			if (isTestMethod(m))
				addTest(warning("Test method isn't public: "+m.getName()));
			return;
		}
		names.addElement(name);
		addTest(createTest(theClass, name));
	}

isTestMethod()方法代码如下:
	private boolean isTestMethod(Method m) {
		String name= m.getName();
		Class[] parameters= m.getParameterTypes();
		Class returnType= m.getReturnType();
		return parameters.length == 0 && name.startsWith("test") && returnType.equals(Void.TYPE);
	 }

最后一行代码给出了对test方法声明所做的限制。
  • 大小: 8.6 KB
分享到:
评论

相关推荐

    junit3.4.zip

    例如,`public void testXXX()` 方法名约定被视为测试方法,`setUp()` 和 `tearDown()` 方法用于在每个测试前后的准备和清理工作。 2. **断言**:JUnit 提供了一系列的断言方法,如 `assertEquals()`、`assertTrue...

    浪曦][原创]Junit.3.8.详解续二.rar

    2. **注解(Annotations)**:在Junit 3.8中,注解尚未被引入,所以测试类和方法通常使用`public static void testXXX()`的约定。例如,`public static void testAddition()`表示一个加法测试。 3. **断言(Assertions...

    Junit-3.8.1 bin

    在3.8.1版本中,注解方式尚未引入,而是使用`public void testXXX()`格式的方法名来识别测试用例。 2. **断言(Assertions)**:JUnit提供了一系列的断言方法,如`assertEquals()`用于比较预期结果和实际结果,`...

    JUnit在Eclipse中的使用.pdf

    - **testXxx()**:测试方法,以`test`为前缀,JUnit会自动识别并执行这些方法。 #### 六、JUnit面板 在Eclipse中,可以使用JUnit面板来查看测试结果。如果当前没有显示JUnit面板,可以通过`Window` -&gt; `Show View` ...

    Junit培训讲义.ppt

    JUnit 为开发者提供了便利的API,使得编写具有明确测试结果的可重用单元测试用例变得容易。它还支持批量运行测试用例,有助于代码的打包发布和测试代码的管理。此外,JUnit的一个显著优点是其灵活性,一个针对特定类...

    回归测试框架

    - **注解**:JUnit 4使用注解来标识测试方法,例如`@Test`、`@Before`、`@After`等,取代了JUnit 3中必须以特定名字(如`testXXX`)命名的方法。 - **参数化测试**:允许同一个测试方法使用多组不同的输入数据进行多...

    JavaExtremeProgrammingCookbook.pdf

    - **测试方法**:每个测试方法通常命名为`testXXX()`的形式。 - **测试套件**:将多个测试方法组合在一起,形成一个整体的测试流程。 #### 六、JUnit 的安装与配置 - **安装**:可以通过Maven或Gradle等构建工具...

    Robotium入门知识分享

    定义测试案例 (`TestCase`),通常以 `testXXX` 的形式命名方法。 2. 组合测试案例成测试套件 (`TestSuite`)。 3. 使用测试运行器 (`TestRunner`) 执行测试套件。 4. 收集并分析测试结果 (`TestResult`)。 #### ...

    JBuilder2005单元测试之JUnit框架

    2. `junit.framework.TestCase`:测试用例类,是编写具体测试的基础,你的业务类测试通常会继承这个类,然后自定义若干个以`testXxx()`命名的方法,每个方法内部通过assert方法设定测试条件。 3. `junit.framework....

    软件测试冲刺题.pdf

    - B是Junit中测试方法的定义,public void testXXX()。 - B的条件组合覆盖是测试覆盖最强的标准。 - C的语句覆盖是测试覆盖最弱的标准。 以上是对软件测试中涉及的基本概念和方法的详细阐述,涵盖了测试的多个...

    精品(2021-2022年)资料软件测试试题及答案分析.doc

    8. **JUnit测试用例**:在JUnit中,公共方法`public void testXXX()`定义了一个测试用例,因此选项B正确。 9. **单元测试**:单元测试是软件测试的基础环节,它针对软件的最小可测试单元进行,如函数或方法。选项A...

    软件测试复习题.doc

    14. 在 Junit 中,测试用例的方法必须是公共的(public)并且返回类型为 void(B)。因此,正确形式是 `public void testXXX()`。 15. 软件测试不需要了解软件的内部构造(B)。测试人员通常关注功能(A)、处理...

    软件测试基础期末试卷及参考答案

    16. 在 Junit 中,testXXX()方法必须满足三个条件:public、void 和无方法参数。 17. 代码复审是一种静态测试,它不实际运行程序。 18. 集成测试可以分为一次性集成测试和增量式集成测试两种方式。 19. 软件开发...

    软件测试基础-11软件工程-期末考试A卷及答案.doc

    7. **Junit测试框架**:在Junit中,测试方法需要是public void无参数的方法,以`testXXX()`的形式命名。 8. **软件质量保证**:软件测试是保证软件质量的重要手段,其中单元测试是最基础的环节,它专注于模块内部的...

Global site tag (gtag.js) - Google Analytics