<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
TestResult result
=
(
new
MoneyTest(
"
testMoneyMoneyBag
"
)).run();
TestSuite suite
=
new
TestSuite();

suite.addTest(
new
MoneyTest(
"
testMoneyMoneyBag
"
));
suite.addTest(
new
MoneyTest(
"
testSimpleAdd
"
));
TestResult result
=
suite.run();
import
junit.framework.Test;
import
junit.framework.TestSuite;
public
class
TestAll
{
public class TestAll{
//定义一个suite,对于junit的作用可以视为类似于java应用程序的main。
public static Test suite(){
TestSuite suite = new TestSuite("Running all tests.");
suite.addTestSuite( TestCase1.class);
suite.addTestSuite( TestCase2.class);
return suite;
}
}
<
junit
printsummary
="yes"
haltonfailure
="no"
>
<
classpath
>
<
path
refid
="classpath"
/>
<
pathelement
location
="${dist.junit}"
/>
</
classpath
>
<
formatter
type
="brief"
usefile
="false"
/>
<
formatter
type
="xml"
/>
<
batchtest
todir
="${doc.junitReport}"
>
<
fileset
dir
="${dist.junit}"
includes
="**/*Test.class"
/>
</
batchtest
>
</
junit
>
<
junitreport
todir
="${doc.junitReport}"
>
<
fileset
dir
="${doc.junitReport}"
>
<
include
name
="TEST*-*.xml"
/>
</
fileset
>
<
report
format
="frames"
styledir
="${junit.styleDir}"
todir
="${doc.junitReport}"
/>
</
junitreport
>
检查表
|---com
|---mod1
|---class1
junit
<
=测试代码根目录
|---com
|---mod1
|---class1
Junit
的学习笔记
J
1.
Junit
中几个不得不掌握的方法
a)
assertNull
b)
assertNotNull
c)
assertEquals
d)
assertNotEquals
e)
assertTrue
f)
assertFalse
g)
assertSame
h)
assertNotSame
i)
fail
2.
使用方法
a)
类名规则
:
类名
+Test
比如你有一个需要测试的类是
HelloMyPlog
则你的测试类就叫做
HelloMyPlogTest
b)
方法规则:
test+
方法名字
如
testShowPlogInfo()
c)
必须继承TestCase类
d) setUp与tearDown,这两个函数是Junit中提供初始化和反初始化每个测试方法的。setUp在每个测试方法调用前被调用,负责初始化测试方法所需要的测试环境;tearDown在每个测试方法被调用之后被调用,负责撤销测试环境。
区分
fail
、
exception
。
- fail
,期望出现的错误。产生原因:
assert
函数出错(如
assertFalse(true)
);
fail
函数产生(如
fail(……)
)。
- exception
,不期望出现的错误,属于
unit test
程序运行时抛出的异常。它和普通代码运行过程中抛出的
runtime
异常属于一种类型。
对于
assert
关于
TestSuit
您怎样才能一次运行多个测试?
只要您有了两个测试,您可能就希望一起运行他们。您当然可以每次只运行一个,但是很快您就会感到厌倦。JUnit提供了一个对象,TestSuite,以方便您一次完成任意多的测试一起运行。
例如:只运行一个测试用例,您可能会执行:
TestResult result
=
(
new
MoneyTest(
"
testMoneyMoneyBag
"
)).run();
运行两个测试用例,可以先产生一个套件(Suite),然后将这两个测试用例包含其中,如下:
TestSuite suite
=
new
TestSuite();
suite.addTest(
new
MoneyTest(
"
testMoneyMoneyBag
"
));
suite.addTest(
new
MoneyTest(
"
testSimpleAdd
"
));
TestResult result
=
suite.run();
组装TestSuite,运行更多的test。在Junit中,Test、TestCase和TestSuite三者组成了composiste pattern。通过组装自己的TestSuite,可以完成对添加到这个TestSuite中的所有的TestCase的调用。而且这些定义的TestSuite还可以组装成更大的TestSuite,这样同时也方便了对于不断增加的TestCase的管理和维护。
它的另一个好处就是,可以从这个
TestCase
树的任意一个节点(
TestSuite
或
TestCase
)开始调用,来完成这个节点以下的所有
TestCase
的调用。提高了
unit test
的灵活性。
使用例子(其实跟上面是一样的)
import
junit.framework.Test;
import
junit.framework.TestSuite;
public
class
TestAll
{
public class TestAll{
//定义一个suite,对于junit的作用可以视为类似于java应用程序的main。
public static Test suite(){
TestSuite suite = new TestSuite("Running all tests.");
suite.addTestSuite( TestCase1.class);
suite.addTestSuite( TestCase2.class);
return suite;
}
}
使用Ant junit task。我们除了使用java来直接运行junit之外,我们还可以使用junit提供的junit task与ant结合来运行。涉及的几个主要的ant task如下:
- <junit>,定义一个junit task
- <batchtest>,位于<junit>中,运行多个TestCase
- <test>,位于<junit>中,运行单个TestCase
- <formatter>,位于<junit>中,定义一个测试结果输出格式
- <junitreport>,定义一个junitreport task
- <report>,位于<junitreport>中,输出一个junit report
具体的语法请参见相关文档。
10. 使用例子:
<
junit
printsummary
="yes"
haltonfailure
="no"
>
<
classpath
>
<
path
refid
="classpath"
/>
<
pathelement
location
="${dist.junit}"
/>
</
classpath
>
<
formatter
type
="brief"
usefile
="false"
/>
<
formatter
type
="xml"
/>
<
batchtest
todir
="${doc.junitReport}"
>
<
fileset
dir
="${dist.junit}"
includes
="**/*Test.class"
/>
</
batchtest
>
</
junit
>
<
junitreport
todir
="${doc.junitReport}"
>
<
fileset
dir
="${doc.junitReport}"
>
<
include
name
="TEST*-*.xml"
/>
</
fileset
>
<
report
format
="frames"
styledir
="${junit.styleDir}"
todir
="${doc.junitReport}"
/>
</
junitreport
>
junit的使用并不很难,然而要书写一个好的TestCase却并非易事。一个不好的TestCase往往是既浪费了时间,也起不了实际的作用。相反,一个好的TestCase,不仅可以很好的指出代码中存在的问题,而且也可以作为代码更准确的文档,同时还在持续集成的过程中起非常重要的作用。在此给出书写TestCase时需要注意的几点:
- 测试的独立性:一次只测试一个对象,方便定位出错的位置。这有2层意思:一个TestCase,只测试一个对象;一个TestMethod,只测试这个对象中的一个方法。
- 给测试方法一个合适的名字。
- 在assert函数中给出失败的原因,如:assertTrue( “… should be true”, ……),方便查错。在这个例子中,如果无法通过assertTrue,那么给出的消息将被显示。在junit中每个assert函数都有第一个参数是出错时显示消息的函数原型。
- 测试所有可能引起失败的地方,如:一个类中频繁改动的函数。对于那些仅仅只含有getter/setter的类,如果是由IDE(如Eclipse)产生的,则可不测;如果是人工写,那么最好测试一下。
- 在setUp和tearDown中的代码不应该是与测试方法相关的,而应该是全局相关的。如针对与测试方法A和B,在setUp和tearDown中的代码应该是A和B都需要的代码。
- 测试代码的组织:相同的包,不同的目录。这样,测试代码可以访问被测试类的protected变量/方法,方便测试代码的编写。放在不同的目录,则方便了测试代码的管理以及代码的打包和发布。一个例子如下:
src
<=源代码根目录
|---com
|---mod1
|---class1
junit
<
=测试代码根目录
|---com
|---mod1
|---class1
下面是Junit常用方法参数的一些说明。
|
Method Summary
| |
|
static void
|
assertArrayEquals
(byte[] expecteds, byte[] actuals)
TODO: fix javadoc Asserts that two object arrays are equal. |
|
static void
|
assertArrayEquals
(char[] expecteds, char[] actuals)
TODO: fix javadoc Asserts that two object arrays are equal. |
|
static void
|
assertArrayEquals
(int[] expecteds, int[] actuals)
TODO: fix javadoc Asserts that two object arrays are equal. |
|
static void
|
assertArrayEquals
(long[] expecteds, long[] actuals)
TODO: fix javadoc Asserts that two object arrays are equal. |
|
static void
|
assertArrayEquals
(java.lang.Object[] expecteds, java.lang.Object[] actuals)
Asserts that two object arrays are equal. |
|
static void
|
assertArrayEquals
(short[] expecteds, short[] actuals)
TODO: fix javadoc Asserts that two object arrays are equal. |
|
static void
|
assertArrayEquals
(java.lang.String message, byte[] expecteds, byte[] actuals)
TODO: fix javadoc Asserts that two object arrays are equal. |
|
static void
|
assertArrayEquals
(java.lang.String message, char[] expecteds, char[] actuals)
TODO: fix javadoc Asserts that two object arrays are equal. |
|
static void
|
assertArrayEquals
(java.lang.String message, int[] expecteds, int[] actuals)
TODO: fix javadoc Asserts that two object arrays are equal. |
|
static void
|
assertArrayEquals
(java.lang.String message, long[] expecteds, long[] actuals)
TODO: fix javadoc Asserts that two object arrays are equal. |
|
static void
|
assertArrayEquals
(java.lang.String message, java.lang.Object[] expecteds, java.lang.Object[] actuals)
Asserts that two object arrays are equal. |
|
static void
|
assertArrayEquals
(java.lang.String message, short[] expecteds, short[] actuals)
TODO: fix javadoc Asserts that two object arrays are equal. |
|
static void
|
assertEquals
(double expected, double actual, double delta)
Asserts that two doubles or floats are equal to within a positive delta. |
|
static void
|
assertEquals
(java.lang.Object[] expecteds, java.lang.Object[] actuals)
Deprecated. use assertArrayEquals |
|
static void
|
assertEquals
(java.lang.Object expected, java.lang.Object actual)
Asserts that two objects are equal. |
|
static void
|
assertEquals
(java.lang.String message, double expected, double actual, double delta)
Asserts that two doubles or floats are equal to within a positive delta. |
|
static void
|
assertEquals
(java.lang.String message, java.lang.Object[] expecteds, java.lang.Object[] actuals)
Deprecated. use assertArrayEquals |
|
static void
|
assertEquals
(java.lang.String message, java.lang.Object expected, java.lang.Object actual)
Asserts that two objects are equal. |
|
static void
| |
|
static void
| |
|
static void
| |
|
static void
|
assertNotNull
(java.lang.String message, java.lang.Object object)
Asserts that an object isn't null. |
|
static void
|
assertNotSame
(java.lang.Object unexpected, java.lang.Object actual)
Asserts that two objects do not refer to the same object. |
|
static void
|
assertNotSame
(java.lang.String message, java.lang.Object unexpected, java.lang.Object actual)
Asserts that two objects do not refer to the same object. |
|
static void
| |
|
static void
| |
|
static void
|
assertSame
(java.lang.Object expected, java.lang.Object actual)
Asserts that two objects refer to the same object. |
|
static void
|
assertSame
(java.lang.String message, java.lang.Object expected, java.lang.Object actual)
Asserts that two objects refer to the same object. |
|
static void
| |
|
static void
| |
|
static void
| |
|
static void
| |



4321

被折叠的 条评论
为什么被折叠?



