为了账号安全,请及时绑定邮箱和手机立即绑定

如何编写单元测试?

如何编写单元测试?

回首忆惘然 2019-07-02 09:51:17
如何编写单元测试?我有一个Java类。我怎么能单元测试它?在我的例子中,类做二进制和。需要两个byte[]数组,对它们进行求和,并返回一个新的二进制数组。
查看完整描述

3 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

  1. 定义正常情况下的期望输出和期望输出,并提供正确的输入。

  2. 现在,通过声明一个类来实现测试,将它命名为任何东西(通常类似于TestAddingModule),并将testAdd方法添加到它中(例如,如下所示):

    • 编写一个方法,并在上面添加@Test注释。
    • 在该方法中,运行二进制和

      assertEquals(expectedVal,calculatedVal).

    • 通过运行它来测试您的方法(在Eclipse中,右击,选择RunasJUnit测试)。

      //for normal addition @Testpublic void testAdd1Plus1() {
          int x  = 1 ; int y = 1;
          assertEquals(2, myClass.add(x,y));}
  3. 按需要添加其他案例。

    • 测试如果存在整数溢出,二进制和不会引发意外异常。
    • 测试您的方法如何优雅地处理Null输入(例如下面的例子)。

      //if you are using 0 as default for null, make sure your class works in that case.@Testpublic void testAdd1Plus1() {
          int y = 1;
          assertEquals(0, myClass.add(null,y));}


查看完整回答
反对 回复 2019-07-02
?
万千封印

TA贡献1891条经验 获得超3个赞

这是一个非常普遍的问题,有很多方法可以回答。

如果要使用JUnit创建测试,则需要创建Testcase类,然后创建单独的测试方法,在测试下测试类/模块的特定功能(单个Testcase类通常与正在测试的单个“Production”类相关联),并在这些方法中执行各种操作,并将结果与正确的结果进行比较。尤其重要的是要尽可能多地覆盖角落的案件。

例如,在您的特定示例中,可以测试以下内容:

  1. 两个正数之间的简单加法。添加它们,然后验证结果是否符合您的预期。
  2. 正数和负数之间的加法(返回带有第一个参数符号的结果)。
  3. 正数和负数之间的加法(用第二个参数的符号返回结果)。
  4. 两个负数之间的加法。
  5. 导致溢出的加法。

要验证结果,您可以使用org.jun it.Assert类中的各种assertXXX方法(为了方便起见,您可以执行‘导入静态org.jun it.Assert.*’)。这些方法测试特定的条件,如果测试没有验证(可选地使用特定消息),则测试失败。

在您的案例中,示例testcase类(没有定义方法内容):

import static org.junit.Assert.*;public class AdditionTests {
    @Test
    public void testSimpleAddition() { ... }


    @Test
    public void testPositiveNegativeAddition() { ... }


    @Test
    public void testNegativePositiveAddition() { ... }


    @Test
    public void testNegativeAddition() { ... }


    @Test
    public void testOverflow() { ... }}

如果您不习惯编写单元测试,而是通过编写临时测试来测试代码,然后对其进行“可视化”验证(例如,您编写了一个简单的main方法,该方法接受使用键盘输入的参数,然后输出结果-然后继续输入值并验证自己的结果是否正确),那么您可以从以上述格式编写此类测试并使用正确的sertXXX方法验证结果开始,而不是手动进行验证。这样,如果必须进行手动测试,则可以更容易地重新运行测试。


查看完整回答
反对 回复 2019-07-02
  • 3 回答
  • 0 关注
  • 375 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信