Junit 4测试案例



我需要为此代码创建Junit 4测试用例的帮助。

public static int computeValue(int x, int y, int z)
{
    int value = 0;
    if (x == y) 
      value = x + 1;
    else if ((x > y) && (z == 0))
           value = y + 2;
         else
           value = z;
     return value;
}

编辑

我想要这样的东西来测试如果其他语句

public class TestingTest {
    @Test
        public void testComputeValueTCXX() {
        }
        …
    @Test
        public void testComputeValueTCXX() {
        }
        }

让您开始的东西...

首先是"扩展"版本,可能对"新手"更有用:

@Test
public void testXandYEqual() {
  // arrange
  int x=0;
  int y=0;
  int anyValueBeingIgnored=0;
  // act
  int result = ThatClass.computeValue(x, y, anyValueBeingIgnored);
  // assert
  assertThat(result, is(1));
}

以上测试IFS级联的第一个情况;断言是许多少年主张之一;IS()是一种hamcrest Matcher方法。此外,这就是我写那个测试柜的方式:

@Test
public void testXandYEqual() {
  assertThat(ThatClass.computeValue(0, 0, 1), is(1));
}

(主要区别是:对我来说,单位测试不应包含我不需要的任何信息;从这个意义上讲:我希望它尽可能纯净,简短,简洁)

基本上,您想编写不同的测试,以涵盖通过逻辑的所有路径。您可以使用许多现有的覆盖工具之一来确保您涵盖所有路径。

另外,您也可以研究参数化测试。含义:您不会创建大量的测试方法,每个测试方法都只用不同的参数调用您的真实方法,而是将所有不同的"调用参数"放入 table ;然后Junit从该表中获取所有数据,并在调用正在测试的"目标"方法时使用该数据。

类似的东西。

    @Test
    public void testcomputeValueWithXYandZAsZero() {
        int result = YourClass.computeValue(0, 0, 0);
        Assert.assertEquals(1, result);
    }

确保用不同的输入编写测试用例,以便涵盖静态方法的所有分支。

您可以使用Eclemma之类的插件来检查测试的覆盖范围。http://www.eclemma.org/

假定您的测试方法位于类stackoverflow中。您需要一个名为StackoverFlowTest的测试类。这就是外观:

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
/**
 *
 * @author someAuthor
 */
public class StackoverflowTest {
    public StackoverflowTest() {
    }
    @BeforeClass
    public static void setUpClass() {
    }
    @AfterClass
    public static void tearDownClass() {
    }
    @Before
    public void setUp() {
    }
    @After
    public void tearDown() {
    }
    // TODO add test methods here.
    // The methods must be annotated with annotation @Test. For example:
    //
    // @Test
    // public void hello() {}
    // Here you test your method computeValue()
    // You cover all three cases in the computeValue method
    @Test
    public void computeValueTest() {
        assertTrue(3 == computeValue(2, 2, 0));
        assertTrue(4 == computeValue(3, 2, 0));
        assertTrue(200 == computeValue(1,2,200));
    }
}

相关内容

  • 没有找到相关文章

最新更新