📄 suitetest.java
字号:
package org.junit.tests;import static org.junit.Assert.assertEquals;import static org.junit.Assert.assertTrue;import java.util.List;import junit.framework.JUnit4TestAdapter;import junit.framework.TestResult;import org.junit.AfterClass;import org.junit.Assert;import org.junit.BeforeClass;import org.junit.Test;import org.junit.runner.JUnitCore;import org.junit.runner.Request;import org.junit.runner.Result;import org.junit.runner.RunWith;import org.junit.runner.Runner;import org.junit.runners.Suite;import org.junit.runners.Suite.SuiteClasses;public class SuiteTest { public static class TestA { @Test public void pass() { } } public static class TestB { @Test public void fail() { Assert.fail(); } } @RunWith(Suite.class) @SuiteClasses({TestA.class, TestB.class}) public static class All { } @Test public void ensureTestIsRun() { JUnitCore core= new JUnitCore(); Result result= core.run(All.class); assertEquals(2, result.getRunCount()); assertEquals(1, result.getFailureCount()); } @Test public void suiteTestCountIsCorrect() throws Exception { Runner runner= Request.aClass(All.class).getRunner(); assertEquals(2, runner.testCount()); } @Test public void ensureSuitesWorkWithForwardCompatibility() { junit.framework.Test test= new JUnit4TestAdapter(All.class); TestResult result= new TestResult(); test.run(result); assertEquals(2, result.runCount()); } @Test public void forwardCompatibilityWorksWithGetTests() { JUnit4TestAdapter adapter= new JUnit4TestAdapter(All.class); List<? extends junit.framework.Test> tests= adapter.getTests(); assertEquals(2, tests.size()); } @Test public void forwardCompatibilityWorksWithTestCount() { JUnit4TestAdapter adapter= new JUnit4TestAdapter(All.class); assertEquals(2, adapter.countTestCases()); } private static String log= ""; @RunWith(Suite.class) @SuiteClasses({TestA.class, TestB.class}) public static class AllWithBeforeAndAfterClass { @BeforeClass public static void before() { log+= "before "; } @AfterClass public static void after() { log+= "after "; } } @Test public void beforeAndAfterClassRunOnSuite() { log= ""; JUnitCore.runClasses(AllWithBeforeAndAfterClass.class); assertEquals("before after ", log); } @RunWith(Suite.class) public static class AllWithOutAnnotation { } @Test public void withoutSuiteClassAnnotationProducesFailure() { Result result= JUnitCore.runClasses(AllWithOutAnnotation.class); assertEquals(1, result.getFailureCount()); String expected= String.format( "class '%s' must have a SuiteClasses annotation", AllWithOutAnnotation.class.getName()); assertEquals(expected, result.getFailures().get(0).getMessage()); } @RunWith(Suite.class) @SuiteClasses(InfiniteLoop.class) static public class InfiniteLoop { } @Test public void whatHappensWhenASuiteHasACycle() { Result result= JUnitCore.runClasses(InfiniteLoop.class); assertEquals(1, result.getFailureCount()); } @RunWith(Suite.class) @SuiteClasses({BiInfiniteLoop.class, BiInfiniteLoop.class}) static public class BiInfiniteLoop { } @Test public void whatHappensWhenASuiteHasAForkingCycle() { Result result= JUnitCore.runClasses(BiInfiniteLoop.class); assertEquals(2, result.getFailureCount()); } // The interesting case here is that Hydra indirectly contains two copies of // itself (if it only contains one, Java's StackOverflowError eventually // bails us out) @RunWith(Suite.class) @SuiteClasses({Hercules.class}) static public class Hydra { } @RunWith(Suite.class) @SuiteClasses({Hydra.class, Hydra.class}) static public class Hercules { } @Test public void whatHappensWhenASuiteContainsItselfIndirectly() { Result result= JUnitCore.runClasses(Hydra.class); assertEquals(2, result.getFailureCount()); } @RunWith(Suite.class) @SuiteClasses( {}) public class WithoutDefaultConstructor { public WithoutDefaultConstructor(int i) { } } @Test public void suiteShouldBeOKwithNonDefaultConstructor() throws Exception { Result result= JUnitCore.runClasses(WithoutDefaultConstructor.class); assertTrue(result.wasSuccessful()); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -