001 package junit.extensions;
002
003 import junit.framework.Test;
004 import junit.framework.TestResult;
005
006 /**
007 * A Decorator that runs a test repeatedly.
008 */
009 public class RepeatedTest extends TestDecorator {
010 private int fTimesRepeat;
011
012 public RepeatedTest(Test test, int repeat) {
013 super(test);
014 if (repeat < 0) {
015 throw new IllegalArgumentException("Repetition count must be >= 0");
016 }
017 fTimesRepeat = repeat;
018 }
019
020 @Override
021 public int countTestCases() {
022 return super.countTestCases() * fTimesRepeat;
023 }
024
025 @Override
026 public void run(TestResult result) {
027 for (int i = 0; i < fTimesRepeat; i++) {
028 if (result.shouldStop()) {
029 break;
030 }
031 super.run(result);
032 }
033 }
034
035 @Override
036 public String toString() {
037 return super.toString() + "(repeated)";
038 }
039 }