Allow OutputCaptureRule to be used with AssertJ
Update `OutputCaptureRule` so that it now implements `CapturedOutput` and can be used directly with AssertJ. Closes gh-17512
This commit is contained in:
@@ -21,6 +21,7 @@ import java.util.List;
|
||||
|
||||
import org.hamcrest.Matcher;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Rule;
|
||||
import org.junit.rules.TestRule;
|
||||
import org.junit.runner.Description;
|
||||
import org.junit.runners.model.Statement;
|
||||
@@ -29,12 +30,28 @@ import static org.hamcrest.Matchers.allOf;
|
||||
|
||||
/**
|
||||
* JUnit {@code @Rule} to capture output from System.out and System.err.
|
||||
* <p>
|
||||
* To use add as a {@link Rule @Rule}:
|
||||
*
|
||||
* <pre class="code">
|
||||
* public class MyTest {
|
||||
*
|
||||
* @Rule
|
||||
* public OutputCaptureRule output = new OutputCaptureRule();
|
||||
*
|
||||
* @Test
|
||||
* public void test() {
|
||||
* assertThat(output).contains("ok");
|
||||
* }
|
||||
*
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* @author Phillip Webb
|
||||
* @author Andy Wilkinson
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public class OutputCaptureRule implements TestRule {
|
||||
public class OutputCaptureRule implements TestRule, CapturedOutput {
|
||||
|
||||
private final OutputCapture delegate = new OutputCapture();
|
||||
|
||||
@@ -73,6 +90,21 @@ public class OutputCaptureRule implements TestRule {
|
||||
OutputCaptureRule.this.delegate.reset();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAll() {
|
||||
return this.delegate.getAll();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getOut() {
|
||||
return this.delegate.getOut();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErr() {
|
||||
return this.delegate.getErr();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.delegate.toString();
|
||||
|
||||
@@ -29,12 +29,18 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
public class OutputCaptureRuleTests {
|
||||
|
||||
@Rule
|
||||
public OutputCaptureRule outputCapture = new OutputCaptureRule();
|
||||
public OutputCaptureRule output = new OutputCaptureRule();
|
||||
|
||||
@Test
|
||||
public void toStringShouldReturnAllCapturedOutput() {
|
||||
System.out.println("Hello World");
|
||||
assertThat(this.outputCapture.toString()).contains("Hello World");
|
||||
assertThat(this.output.toString()).contains("Hello World");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void captureShouldBeAssertable() {
|
||||
System.out.println("Hello World");
|
||||
assertThat(this.output).contains("Hello World");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ import static org.hamcrest.Matchers.allOf;
|
||||
* @author Andy Wilkinson
|
||||
* @since 2.2.0
|
||||
*/
|
||||
public class OutputCaptureRule implements TestRule {
|
||||
public class OutputCaptureRule implements TestRule, CapturedOutput {
|
||||
|
||||
private final OutputCapture delegate = new OutputCapture();
|
||||
|
||||
@@ -64,6 +64,21 @@ public class OutputCaptureRule implements TestRule {
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAll() {
|
||||
return this.delegate.getAll();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getOut() {
|
||||
return this.delegate.getOut();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getErr() {
|
||||
return this.delegate.getErr();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return this.delegate.toString();
|
||||
|
||||
Reference in New Issue
Block a user