JUnit4在Eclipse中的快速入门教程:新手指南

4星 · 超过85%的资源 需积分: 0 1 下载量 94 浏览量 更新于2024-09-13 收藏 254KB PDF 举报
JUnit是Eclipse集成开发环境(IDE)中一款强大的单元测试工具,特别适合新用户学习和使用。本文档是一份针对有一定Java编程经验的用户撰写的指南,旨在帮助读者在Eclipse中快速上手JUnit 4.x。文档作者Wishnu Prasetya于2008年11月28日发布,内容涵盖了如何在Eclipse环境中配置和编写测试用例,以及如何与项目结构集成。 首先,文章假设读者对如何编写JUnit测试有所了解,如果还不熟悉,可以参考作者提供的JUnit 4.x快速教程。此外,文档假定读者已经是Eclipse的熟练用户,能够自行添加库到项目的构建路径。 步骤一:项目设置 开始一个新的Java项目,例如命名为"MyProject"。在这个项目中,创建一个名为"Subscription.java"的类,这个类将是我们将要进行测试的对象。Subscription类包含私有变量price(以欧元-分表示订阅总价格)和length(以月为单位的订阅长度),以及相关的构造函数和方法。 1. **构造函数**: - Subscription(int p, int n): 构造函数用于创建一个订阅实例,接受价格和长度作为参数。 2. **pricePerMonth() 方法**: - 这个方法计算每月订阅价格,四舍五入到最接近的分。如果长度或价格小于等于0,则返回0;否则,计算价格除以长度,根据四舍五入后的余数决定是否加1。 3. **取消订阅方法**: - 文档中未提及具体的取消订阅方法,但可以推测这里会有相应的逻辑处理。 步骤二:JUnit测试集成 在Eclipse中,为了使用JUnit,需要确保项目包含了JUnit库。在项目设置中,确保JUnit框架已添加到项目引用中,可以通过以下步骤完成: - 右键点击项目 -> Build Path -> Configure Build Path -> Libraries -> Add JARs 或者 Add External JARs -> 寻找JUnit的jar文件并导入。 接下来,创建测试类来检验Subscription类的功能。在"MyProject"中新建一个Java类,如"SubscriptionTest.java",并编写针对Subscription类的方法进行测试,包括但不限于验证构造函数、pricePerMonth方法的行为。 例如,一个简单的测试用例可能如下: ```java import org.junit.Test; import static org.junit.Assert.*; public class SubscriptionTest { @Test public void testSubscriptionCreation() { Subscription sub = new Subscription(100, 6); // 测试创建一个100欧元,6个月的订阅 assertEquals(16.67, sub.pricePerMonth(), 0.01); // 验证每月价格 } @Test public void testInvalidArguments() { Subscription sub = new Subscription(0, 0); // 测试无效参数 assertEquals(0, sub.pricePerMonth()); // 验证错误处理 } } ``` 通过以上步骤,读者可以学会如何在Eclipse中使用JUnit 4.x进行单元测试,包括编写测试用例和验证类方法行为。这将极大地提高代码质量和维护性。

org.junit.ComparisonFailure: expected:<456[]> but was:<456[ ]> at org.junit.Assert.assertEquals(Assert.java:115) at org.junit.Assert.assertEquals(Assert.java:144) at Dao.BookDaoTest.testAddBook(BookDaoTest.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)

2023-06-12 上传