学习使用TestNG中的断言(Assertion) (1) ——Assertion概述与assertEquals方法简介
2016-02-19 18:31
351 查看
在执行自动化测试用例的时候,我们需要自动判断用例执行完成后获得的输出值是否与预期值一致,这个时候就需要用到断言功能。
TestNG中提供了一个Assert类:org.testng.Assert,该类继承了:java.lang.Object类。从TesNG的官方文档中,我们可以看到,org.testng.Assert类是作为放置一系列断言的静态方法的容器。这些断言方法基本上是有2个或三个输入参数,参数的顺序是 actualValue(实际值), expectedValue(期望值) [, message(信息)].
在实际的测试工作中我们经常用到的断言方法有:assertEquals方法。该方法可以判断 actualValue(实际值)与expectedValue(期望值)是否一致,如果两者不一致,则会抛出 java.lang.AssertionError错误,打印出message(如果参数中有message的话),并跳出这个测试方法。我们可以通过一段简单的代码来看看这种情况。代码如下:
运行结果如下:
TestNG中提供了一个Assert类:org.testng.Assert,该类继承了:java.lang.Object类。从TesNG的官方文档中,我们可以看到,org.testng.Assert类是作为放置一系列断言的静态方法的容器。这些断言方法基本上是有2个或三个输入参数,参数的顺序是 actualValue(实际值), expectedValue(期望值) [, message(信息)].
在实际的测试工作中我们经常用到的断言方法有:assertEquals方法。该方法可以判断 actualValue(实际值)与expectedValue(期望值)是否一致,如果两者不一致,则会抛出 java.lang.AssertionError错误,打印出message(如果参数中有message的话),并跳出这个测试方法。我们可以通过一段简单的代码来看看这种情况。代码如下:
import org.testng.Assert; import org.testng.annotations.Test; public class TestAssertion { @Test public void testAssertEquals(){ System.out.println("before test"); Assert.assertEquals(1,2,"Not equals: "); System.out.println("after test"); } }
运行结果如下:
before test FAILED: testAssertEquals java.lang.AssertionError: Not equals: expected [2] but found [1] at org.testng.Assert.fail(Assert.java:94) at org.testng.Assert.failNotEquals(Assert.java:494) at org.testng.Assert.assertEquals(Assert.java:123) at org.testng.Assert.assertEquals(Assert.java:370) at testNGtest.TestAssertion.testAssertEquals(TestAssertion.java:11) 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:497) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84) at org.testng.internal.Invoker.invokeMethod(Invoker.java:714) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) at org.testng.TestRunner.privateRun(TestRunner.java:767) at org.testng.TestRunner.run(TestRunner.java:617) at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) at org.testng.SuiteRunner.run(SuiteRunner.java:240) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224) at org.testng.TestNG.runSuitesLocally(TestNG.java:1149) at org.testng.TestNG.run(TestNG.java:1057) at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111) at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204) at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:175) =============================================== Default test Tests run: 1, Failures: 1, Skips: 0 ===============================================
可以看到,assertEquals之前的一段代码 System.out.println("before test")被正常运行,控制台中打印出了 before test 的信息。当代码运行到 Assert.assertEquals(1,2,"Not equals: ") 这一句时,抛出了java.lang.AssertionError错误,并打印了message中的内容。同时可以发现,Assert.assertEquals(1,2,"Not equals: ")后的代码没有被运行。这是因为在抛出java.lang.AssertionError错误时,就从该测试方法中跳出了。最后该测试方法也被认定执行失败。
testAssertEquals()方法的传入参数类型除了JAVA的基础数据类型之外,还可以传入如byte数组byte[]、Collection对象、Object对象、Object对象数组等,这个在官网的API手册中描述的很详细。需要注意的是,在做数组、集合类的断言时,只有实际值与期望值中元素内容相同,元素排列的顺序也一致,才会断言是相同的,否则会抛出错误。
相关文章推荐
- 七牛---以一个七牛上传的实例小结下AJAX跨域
- 【BZOJ3270】博物馆 概率DP 高斯消元
- win8.1中文版升级到win8.1专业版
- 安全产品各种已知漏洞的分类查询
- Kerberos事件ID:4
- <关于并发框架>Java原生线程池原理及Guava与之的补充
- Android笔记之卫星菜单的实现
- LayoutAnimationController实战案例
- HDU 2602 Bone Collector(01背包)
- Docker Images and Registry
- MySQL_面向过程访问.php
- CodeBloks(解决路径问题)Can't find compiler...
- 建造者模式
- DP项目开发随记8-浮空,取消
- simditor 图片上传成功后修改图片地址
- 此间有高招——《“批判性思维套装”如何高效学习》读书笔记
- spark连接mongodb
- MongoDB Java使用指南
- 关于cgywin下执行找不到make命令的问题
- LeetCode 120. Triangle 解题报告