- import
junit.framework.*;
- public
class
MainTest
- {
-
public
static
Test suite()
- {
- TestSuite suite =
new
TestSuite();
-
-
- suite.addTest(
new
CalculateUtilTest(
"testDivision"
));
-
-
- suite.addTest(
new
CalculateUtilTest(
"testCreate"
));
-
return
suite;
- }
-
-
public
static
void
main(String[] args)
- {
-
- junit.textui.TestRunner.run(suite());
- }
- }
代码解释:
1行:静态方法,返回Test类对象。该方法主要是构造TestSuite类对象,然后向
其中加入你想要测试的方法。
2行:构造TestSuite类对象
3行:向TestSuite对象中添加一个要测试的方法。
new CalculateUtilTest("testDivision")表示测试CalculateUtilTest类的
testDivision方法。
4行:运行该测试套件
上面的方法可以非常方便地添加自己所需要的方法,如果是用该方法,就要在编写测试方法时将其加入测试套件中。如果你觉得很麻烦,那么就使用下列一行代码一次测试一个类吧。
- public
static
void
main(String[] args)
- {
- junit.swingui.TestRunner.run(CalculateUtilTest.
class
);
- }
或者在suite方法中添加所要测试的类也可以
- public
static
Test suite()
- {
- TestSuite suite =
new
TestSuite();
- suite.addTestSuite(CalculateUtil.
class
);
-
return
suite;
- }
尽管上面的测试套件提供了你所需要的各种粒度测试方法(按照方法名,测试整个类),但是有个问题是,当我们面临一大堆测试代码时,很容易忘记将你的测试类加入到一个测试套件中去。一个好的解决方法是让java程序扫描你的classpath中的全部类,搜集所需要的测试类然后逐一执行。这样做的好处就是不会有测试被遗漏,但缺点是某些测试,你并不希望每次都运行它们。具体做法如下:先编写收集测试类的功能,并将全部测试类装入测试套件。代码如下
- import
java.lang.reflect.Modifier;
- import
java.util.*;
- import
junit.runner.*;
- import
junit.framework.*;
- public
class
SuiteBuilder
- {
-
-
public
Test suite()
- {
- TestSuite suite=
new
TestSuite();
-
- List list=getTestClassNames();
-
for
(
int
i=
0
;i<list.size();i++) <="" span="">
- {
- suite.addTestSuite(createClass(list.get(i).toString()));
- }
-
return
suite;
- }
-
-
-
public
List <string> getTestClassNames()
- {
- TestCollector collector =
new
ClassPathTestCollector()
- {
-
public
boolean
isTestClass(String classFileName)
- {
-
if
(!
super
.isTestClass(classFileName))
-
return
false
;
- String className = classNameFromFile(classFileName);
- Class clazz = createClass(className);
-
return
TestCase.
class
.isAssignableFrom(clazz) && isConcrete(clazz);
- }
- };
-
return
Collections.list(collector.collectTests());
- }
-
-
private
boolean
isConcrete(Class clazz)
- {
-
if
(clazz.isInterface())
-
return
false
;
-
int
modifiers = clazz.getModifiers();
-
return
!Modifier.isAbstract(modifiers);
- }
-
-
private
Class createClass(String name)
- {
-
try
- {
-
return
Class.forName(name);
- }
-
catch
(ClassNotFoundException e)
- {
-
return
null
;
- }
- }
-
-
-
-
-
protected
boolean
isTestClass(String classFileName)
- {
-
return
classFileName.endsWith(
".class"
) && classFileName.indexOf('$') <
0
&&
- classFileName.indexOf(
"Test"
) >
0
;
- }
- }
注:注释都比较详细,在这里就不多解释了。
然后编写测试套件类:
- package
com;
- public
class
MainTest
- {
-
public
static
void
main(String[] args)
- {
- junit.textui.TestRunner.run(
new
SuiteBuilder().suite());
- }
- }
运行该测试套件,你会发现在你的classpath下的所有测试类都会被执行。只不过是文本形式显示结果。
相关推荐
在“测试驱动开发with Junit(三)”这一主题中,我们将会深入探讨如何利用Java中的JUnit框架进行TDD实践。 JUnit是Java编程语言中最常用的单元测试框架之一,它为开发者提供了方便快捷的方式来编写和运行可重复的...
总结,测试驱动开发With Junit涉及到的主要知识点包括: - TDD(测试驱动开发)的概念和流程 - JUnit作为Java的单元测试框架,如何创建测试类和测试方法 - 如何使用`assert`方法进行断言,确保代码行为正确 - 创建和...
本文将深入讲解JUnit 4的关键特性和如何进行测试驱动开发。 1. 预备知识 在开始使用JUnit 4进行测试之前,了解一些预备知识是必要的。例如,Java 5引入的可变长参数(Variable-Length Arguments)允许函数接收不定...
《Pragmatic Unit Testing in Java with JUnit》是一本专注于Java单元测试实践的书籍,其配套源代码提供了丰富的示例和实践案例,帮助读者深入理解如何有效地使用JUnit进行单元测试。JUnit是Java领域最广泛使用的...
2. `@RunWith(SpringRunner.class)`:这是一个JUnit runner,它使得Spring TestContext Framework可以驱动测试执行。 3. `@SpringBootTest`:这个注解用于启动一个Spring应用上下文,可以指定配置类、web环境等。 ...
这个"junit4测试源码"可能包含了JUnit4框架的源代码,使得用户能够深入理解其内部工作原理,便于自定义扩展或学习测试驱动开发(TDD)的最佳实践。 首先,JUnit4引入了注解(Annotation)的概念,使得测试类和测试...
《Junit实战第二版》是一本专注于Java编程领域中单元测试技术的专业指南,它详尽地阐述了如何利用Junit框架进行高效的测试驱动开发。这本书是面向Java开发者,特别是那些致力于提升代码质量、确保软件稳定性的程序员...
10. **TDD(测试驱动开发)**:JUnit也支持采用TDD(Test-Driven Development)模式,即先写测试,再编写能通过测试的代码,这有助于提高代码质量和可维护性。 总之,JUnit作为Java的主流测试工具,其强大功能和...
在实际项目中,应当结合TDD(测试驱动开发)理念,先编写测试再实现功能,确保代码质量从一开始就得到保障。 总之,软件测试是保障软件质量的重要手段,而Junit作为Java的主流单元测试框架,为开发者提供了强大的...
《Pragmatic Unit Testing in Java with JUnit》是一本专注于Java单元测试的指南,它深入讲解了如何有效地利用JUnit框架进行测试驱动开发(TDD)。JUnit是Java领域中最广泛使用的单元测试框架,它为开发者提供了编写...
- **Al Koscielny**(软件开发者):“如果在我开始进行测试驱动开发时就有这本书就好了。” - **Andrew Thompson**(顾问,Greenbrier & Russel):“虽然我对测试并不陌生,但我仍然在很多方面感到困惑。我认为这...
【标题】"junit4 单元测试源码"涉及的是Java编程中单元测试的重要工具...通过分析和运行这些源码,学习者可以掌握单元测试的基本概念,了解如何编写有效的测试用例,以及如何利用Eclipse的集成环境进行测试驱动开发。
Junit单元测试是Java开发中的一个关键组成部分,它允许开发者对代码进行小规模的验证,确保每个函数或方法按照预期工作。本指南将深入探讨Junit的使用,帮助你掌握如何编写、运行和理解单元测试。 一、Junit简介 ...