diff --git a/extractor/src/test/java/org/schabi/newpipe/MockOnly.java b/extractor/src/test/java/org/schabi/newpipe/MockOnly.java index 2435fe2a..69f8ac49 100644 --- a/extractor/src/test/java/org/schabi/newpipe/MockOnly.java +++ b/extractor/src/test/java/org/schabi/newpipe/MockOnly.java @@ -6,6 +6,8 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import javax.annotation.Nonnull; + /** * Marker annotation to skip test if it not run with mocks. * @@ -15,4 +17,9 @@ import java.lang.annotation.Target; @Target({ElementType.METHOD, ElementType.TYPE}) @Inherited public @interface MockOnly { + + /** + * Explanation why this test shold only be run with mocks and not against real websites + */ + @Nonnull String reason(); } \ No newline at end of file diff --git a/extractor/src/test/java/org/schabi/newpipe/MockOnlyRule.java b/extractor/src/test/java/org/schabi/newpipe/MockOnlyRule.java index 78da16aa..bbdf3d73 100644 --- a/extractor/src/test/java/org/schabi/newpipe/MockOnlyRule.java +++ b/extractor/src/test/java/org/schabi/newpipe/MockOnlyRule.java @@ -33,13 +33,15 @@ public class MockOnlyRule implements TestRule { return new Statement() { @Override public void evaluate() throws Throwable { - final boolean hasAnnotation = description.getAnnotation(MockOnly.class) == null; - final boolean isMockDownloader = downloader == null || - !downloader.equalsIgnoreCase(DownloaderType.REAL.toString()); - Assume.assumeTrue( - "The test is not reliable against a website and thus skipped", - hasAnnotation && isMockDownloader - ); + final MockOnly annotation = description.getAnnotation(MockOnly.class); + if (annotation != null) { + final boolean isMockDownloader = downloader == null || + !downloader.equalsIgnoreCase(DownloaderType.REAL.toString()); + + Assume.assumeTrue("The test is not reliable against real website. Reason: " + + annotation.reason(), isMockDownloader); + } + base.evaluate(); }