黑盒测试:不需要写代码。给输入值,看程序是否能够输出期望的值;白盒测试:需要写代码的,关注程序具体的执行流程。 2、Junit的使用
使用步骤:
- 定义一个测试类(测试用例),建议 测试类名:被测试的类名Test,如CalculatorTest;包名 xxx.xxx.xx.test ,如aa.bbb.c.test定义测试方法:可以独立运行,建议 方法名:test测试的方法名,如testAdd();返回值:void;参数列表:空参给方法加@Test导入Junit 的依赖环境
判定结果:绿色代表成功,红色代表失败。一般会使用断言 *** 作来处理结果:Assert.assertEquals(期望的结果,运算的结果)。
两个注解:
@Before:修饰的方法会在测试方法之前被自动执行;@After:修饰的方法会在测试方法执行之后自动执行。
代码演示:
package JunitPackage; public class Calculator { public int add(int a, int b) { return a+b; } public int sub(int a,int b) { return a-b; } } package test; import JunitPackage.Calculator; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class CalculatorTest { //初始化方法:用于资源申请,所有测试方法在执行之前都会执行该方法 @Before public void init() { System.out.println("init"); } //释放资源方法:所有测试方法执行完后,都会自动执行该方法 @After public void close() { System.out.println("close"); } //测试add()方法 @Test public void testAdd() { //创建计算器对象 Calculator c = new Calculator(); //调用add()方法 int result = c.add(1,2); System.out.println(result); //断言:断言这个结果是4 (断言失败) Assert.assertEquals(4,result); } //测试add()方法 @Test public void testSub() { //创建计算器对象 Calculator c = new Calculator(); //调用add()方法 int result = c.sub(1,2); System.out.println(result); //断言:断言这个结果是-1 (断言成功) Assert.assertEquals(-1,result); } } 结果: init 3 close java.lang.AssertionError: Expected :4 Actual :3at org.junit.Assert.fail(Assert.java:89) at org.junit.Assert.failNotEquals(Assert.java:835) at org.junit.Assert.assertEquals(Assert.java:647) at org.junit.Assert.assertEquals(Assert.java:633) at test.CalculatorTest.testAdd(CalculatorTest.java:31) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.junit.runners.model.frameworkMethod$1.runReflectiveCall(frameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.frameworkMethod.invokeExplosively(frameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38) at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)