1.Maven Dependency
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.fool.junit4</groupId> <artifactId>junit4</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>junit4</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> </project>
2.Project Directory
3.src/main/java
Calculator.java
package org.fool.junit4;
public class Calculator
{
public int add(int a, int b)
{
return a + b;
}
public int subtract(int a, int b)
{
return a - b;
}
public int multiply(int a, int b)
{
return a * b;
}
public int divide(int a, int b) throws Exception
{
if (0 == b)
{
throw new Exception("除数不能为0");
}
return a / b;
}
}
largest.java
package org.fool.junit4;
public class Largest
{
public int getLargest(int[] array) throws Exception
{
if (null == array || 0 == array.length)
{
throw new Exception("数组不能为空!");
}
int result = array[0];
for (int i = 0; i < array.length; i++)
{
if (result < array[i])
{
result = array[i];
}
}
return result;
}
}
4.src/test/java
CalculatorTest.java
package org.fool.junit4;
import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class CalculatorTest
{
private Calculator cal;
@BeforeClass
public static void setUpBeforeClass() throws Exception
{
System.out.println("globalInit invoked!");
}
@AfterClass
public static void tearDownAfterClass() throws Exception
{
System.out.println("globalDestroy invoked!");
}
@Before
public void setUp() throws Exception
{
cal = new Calculator();
System.out.println("before");
}
@After
public void tearDown() throws Exception
{
System.out.println("destroy");
}
@Test(timeout = 800)
public void testAdd()
{
int result = cal.add(3, 5);
assertEquals(8, result);
}
@Test
public void testSubtract()
{
int result = cal.subtract(1, 6);
assertEquals(-5, result);
}
@Test
public void testMultiply()
{
int result = cal.multiply(5, 9);
assertEquals(45, result);
}
@Test(expected = Exception.class)
public void testDivide() throws Exception
{
cal.divide(1, 0);
}
}
LargestTest.java
package org.fool.junit4;
import static org.junit.Assert.fail;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class LargestTest
{
private Largest largest;
@Before
public void setUp() throws Exception
{
largest = new Largest();
}
@After
public void tearDown() throws Exception
{
}
@Test
public void testGetLargest()
{
int[] array = { 1, 9, -10, -20, 23, 34 };
int result = 0;
try
{
result = largest.getLargest(array);
}
catch (Exception ex)
{
fail("测试失败");
}
Assert.assertEquals(34, result);
}
@Test(expected = Exception.class)
public void testGetLargest2() throws Exception
{
largest.getLargest(null);
}
@Test(expected = Exception.class)
// @Ignore("not ready yet")
public void testGetLargest3() throws Exception
{
largest.getLargest(new int[] {});
}
}
ParametersTest.java
package org.fool.junit4;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import java.util.Collection;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class ParametersTest
{
private int expected;
private int input1;
private int input2;
private Calculator cal;
@SuppressWarnings("rawtypes")
@Parameters
public static Collection prepareData()
{
Object[][] object = { { 3, 1, 2 }, { -4, -1, -3 }, { 5, 2, 3 },
{ 4, -4, 8 } };
return Arrays.asList(object);
}
@Before
public void setUp()
{
cal = new Calculator();
}
public ParametersTest(int expected, int input1, int input2)
{
this.expected = expected;
this.input1 = input1;
this.input2 = input2;
}
@Test
public void testAdd()
{
assertEquals(this.expected, cal.add(this.input1, this.input2));
}
}
TestAll.java
package org.fool.junit4;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses({ CalculatorTest.class, LargestTest.class,
ParametersTest.class })
public class TestAll
{
}
TestAll2.java
package org.fool.junit4;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@RunWith(Suite.class)
@Suite.SuiteClasses(TestAll.class)
public class TestAll2
{
}