public class TestAssert {
@Test
public void testAssert() {
System.out.println("Test1");
Assert.assertEquals(1,2);
System.out.println("Test2");
}
}
运行结果:
[RemoteTestNG] detected TestNG version 6.11.0
Test1
FAILED: testAssert
junit.framework.AssertionFailedError: expected:<1> but was:<2>
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.Assert.failNotEquals(Assert.java:282)
at junit.framework.Assert.assertEquals(Assert.java:64)
at junit.framework.Assert.assertEquals(Assert.java:201)
只打印了第一条输出信息:Test1,第二条没有打印是因为
Assert.assertEquals(1,2);验证的期望值和实际值不相同(即1和2不相同)
,测试没有通过
当然这样的话可能不太直观,因为如果你断言的地方过多,很容易弄混,
这时我们可以使用:Assert.assertEquals("前后两个值不同",1,2);
这时的运行结果:
Test1
FAILED: testAssert
junit.framework.AssertionFailedError: 前后两个值不同 expected:<1> but was:<2>
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.Assert.failNotEquals(Assert.java:282)
at junit.framework.Assert.assertEquals(Assert.java:64)
at junit.framework.Assert.assertEquals(Assert.java:201)
at com.test.demo.TestAssert.testAssert(TestAssert.java:12)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
会有我们之前写的关键提示信息,相对而言更加直观
其中:一般int类型数字,前面的一般是期望值参数,后面的一般是实际值参数
package com.test.demo;
import org.testng.annotations.Test;
import com.selenium.test.util.Assertion;
import junit.framework.Assert;
public class TestAssert {
@Test
public void testAssert() {
Assertion.setFlag(true);
System.out.println("Test1");
Assertion.verifyEquals(1,2,"不相同");
System.out.println("Test2");
Assert.assertTrue(Assertion.currentFlag());
}
}
结果输出:
[RemoteTestNG] detected TestNG version 6.11.0
Test1
java.lang.AssertionError: 不相同 expected [2] but found [1]
at org.testng.Assert.fail(Assert.java:93)
at org.testng.Assert.failNotEquals(Assert.java:512)
at org.testng.Assert.assertEqualsImpl(Assert.java:134)
at org.testng.Assert.assertEquals(Assert.java:115)
Test2
FAILED: testAssert
junit.framework.AssertionFailedError
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.Assert.assertTrue(Assert.java:20)
at junit.framework.Assert.assertTrue(Assert.java:27)
at com.test.demo.TestAssert.testAssert(TestAssert.java:17)
===============================================
Default test
Tests run: 1, Failures: 1, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 1, Failures: 1, Skips: 0
===============================================
为什么引入断言?我们通过WebDriver编写的自动化测试脚本,严格来说还不能称之为测试用例,主要是因为我们没有对测试的结果进行验证,通过Assert断言比较期望值和实际值是否相同可以达到我们验证结果的目的常见Assert断言方法:示例一:public class TestAssert { @Test public void testAssert()