JUnit的正确使用姿势

发表于:2017-9-15 13:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:TMaize    来源:博客

  一直以来,使用junit的原因是可以单独运行方法,不用在写大量的main方法了,而且喜欢使用System.out来输出测试结果
  直到最近读了一篇关于junit的文章才知道junit的强大之处以及自已使用上的错误….
  正确建立Junit Test Case
  以前就是直接建立一个类,然后写上一堆方法,在方法上加上@Test注解然后单独运行方法
  正确的做法是使用Junit Test Case创建向导来创建
  方法名为要测试的类名+Test
  可以选择要自动创建的初始化和销毁方法和父类(一般用不到)
  最主要的是选测要测试的类,Class under test,后面可以直接选择要测试的方法

  生成的代码如下
  public class AdminServiceTest {
  @BeforeClass
  public static void setUpBeforeClass() throws Exception {
  }
  @AfterClass
  public static void tearDownAfterClass() throws Exception {
  }
  @Before
  public void setUp() throws Exception {
  }
  @After
  public void tearDown() throws Exception {
  }
  @Test
  public void testLogin() {
  fail("Not yet implemented");
  }
  @Test
  public void testExportLoginLog() {
  fail("Not yet implemented");
  }
  }
  注解
  常见的注解如下
  方法的执行顺序为,假设有两个@Test的测试用例
  @BeforeClass –> @Before –> @Test –> @After –> @Before –> @Test –> @After –> @AfterClass
  ●@Before 初始化方法
  ●@After释放资源
  ●@Test测试方法,在这里可以测试期望异常和超时时间
  ●@Ignore忽略的测试方法
  ●@BeforeClass针对所有测试,只执行一次,且必须为static void
  ●@AfterClass针对所有测试,只执行一次,且必须为static void
  ●@RunWith指定测试类使用某个运行器
  ●@Parameters指定测试类的测试数据集合
  ●@Rule允许灵活添加或重新定义测试类中的每个测试方法的行为
  ●@FixMethodOrder指定测试方法的执行顺序
  断言
  断言是编写测试用例的核心实现方式,即期望值是多少,测试的结果是多少,以此来判断测试是否通过
  注意下面的断言方法有多种重载方式,使用时多读一下api
  ●assertArrayEquals(expecteds, actuals)查看两个数组是否相等
  ●assertEquals(expected, actual)查看两个对象是否相等。类似于字符串比较使用的equals()方法
  ●assertNotEquals(first, second)查看两个对象是否不相等。
  ●assertNull(object)查看对象是否为空。
  ●assertNotNull(object)查看对象是否不为空。
  ●assertSame(expected, actual)查看两个对象的引用是否相等。类似于使用“==”比较两个对象
  ●assertNotSame(unexpected, actual)查看两个对象的引用是否不相等。类似于使用“!=”比较两个对象
  ●assertTrue(condition)查看运行结果是否为true。
  ●assertFalse(condition)查看运行结果是否为false。
  ●assertThat(actual, matcher)查看实际值是否满足指定的条件
  ●fail()让测试失败
  @Test
  public void testAssertEquals() {
  int a = 1 + 1;
  a++;//假设这里改变了
  // Assert.assertEquals(2, a);
  Assert.assertEquals("1+1应该为2", 2, a);
  }
  测试肯定是未通过的,输出信息如下

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号