Main.javajava
package github.hyzeta; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class Main { public static void main(String[] args) { // write your code here Result result = JUnitCore.runClasses(TriangleFunTest.class); if (result.wasSuccessful()) { System.out.println("All tests for triangle function has passed."); } else { System.out.println("Some tests for triangle function has failed."); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } } } }
TriangleFun.javagit
package github.hyzeta; enum TriangleFuncResult { EQUILATERAL, ISOSCELES, SCALENE, ERROR } public class TriangleFun { public TriangleFuncResult triangle(int a, int b, int c) { if (a <= 0 || b <= 0 || c <= 0) { return TriangleFuncResult.ERROR; } if (!(a + b > c && Math.abs(a - b) < c)) { return TriangleFuncResult.ERROR; } if (a == b && b == c) { return TriangleFuncResult.EQUILATERAL; } if (a == b || a == c || b == c) { return TriangleFuncResult.ISOSCELES; } return TriangleFuncResult.SCALENE; } }
TriangleFunTest.javagithub
package github.hyzeta; import org.junit.Test; import static org.junit.Assert.*; public class TriangleFunTest { @Test public void testErrorTriangle() { assertEquals(new TriangleFun().triangle(0, 0, 0), TriangleFuncResult.ERROR); assertEquals(new TriangleFun().triangle(-1, -1, -1), TriangleFuncResult.ERROR); assertEquals(new TriangleFun().triangle(-1, 2, 3), TriangleFuncResult.ERROR); assertEquals(new TriangleFun().triangle(1, 2, 3), TriangleFuncResult.ERROR); } @Test public void testEquilateralTriangle() { assertEquals(new TriangleFun().triangle(3, 3, 3), TriangleFuncResult.EQUILATERAL); assertEquals(new TriangleFun().triangle(1, 1, 1), TriangleFuncResult.EQUILATERAL); assertEquals(new TriangleFun().triangle(2, 2, 2), TriangleFuncResult.EQUILATERAL); } @Test public void testIsosceles() { assertEquals(new TriangleFun().triangle(2, 2, 3), TriangleFuncResult.ISOSCELES); assertEquals(new TriangleFun().triangle(4, 4, 5), TriangleFuncResult.ISOSCELES); assertEquals(new TriangleFun().triangle(5, 7, 7), TriangleFuncResult.ISOSCELES); } @Test public void testScalene() { assertEquals(new TriangleFun().triangle(2, 3, 4), TriangleFuncResult.SCALENE); assertEquals(new TriangleFun().triangle(3, 4, 5), TriangleFuncResult.SCALENE); assertEquals(new TriangleFun().triangle(12, 22, 26), TriangleFuncResult.SCALENE); } }
直接在Maven倉庫裏搜索JUnit和hamcrest-coremaven
http://search.maven.org/#search|gav|1|g:%22junit%22%20AND%20a:%22junit%22 http://search.maven.org/#search|gav|1|g:%22org.hamcrest%22%20AND%20a:%22hamcrest-core%22
下載junit-4.12.jar包和hamcrest-core-1.3.jar包函數
而後在IntelliJ IDEA裏的Project Structure裏的Libraries裏添加這兩個jar包測試
JUnit配置完成ui
eclemma的安裝過程相同,直接將eclemma-2.3.3.zip加入到Libraries裏就能夠了,配置完成後以下rest
詳情請參考開頭的源碼,主要是編寫了TriangleFun類(含有triangle函數)和TriangleFuncResult枚舉類型,TriangleFuncResult枚舉類型包含四個結果:code
而後編寫測試類型TriangleFunTest,包含四個測試函數testErrorTriangle,testEquilateralTriangle,testIsosceles,testScalene,分別測試四種結果。ip
最後在Main函數中主動喚起JUnit測試
Result result = JUnitCore.runClasses(TriangleFunTest.class);
而後判斷是否正確,若是測試經過則彙報成功,不成功則打印全部錯誤信息。
if (result.wasSuccessful()) { System.out.println("All tests for triangle function has passed."); } else { System.out.println("Some tests for triangle function has failed."); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } }
之因此Main函數有部分沒有覆蓋到,是由於在Main中有部分代碼用於判斷和輸出測試中的錯誤信息,而這個測試樣例並無發生錯誤,因此這段代碼是跑不到的。