From 830650155b779a081d31a6b29fa726f38114ed07 Mon Sep 17 00:00:00 2001 From: niuweizhe Date: Mon, 21 Dec 2020 21:14:29 +0800 Subject: [PATCH] bypass package private bridge --- .../java/com/github/blindpirate/extensions/Bridge.java | 7 +++++++ src/main/java/com/github/hcsp/encapsulation/Main.java | 7 +++++-- 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/github/blindpirate/extensions/Bridge.java diff --git a/src/main/java/com/github/blindpirate/extensions/Bridge.java b/src/main/java/com/github/blindpirate/extensions/Bridge.java new file mode 100644 index 0000000..c24fefe --- /dev/null +++ b/src/main/java/com/github/blindpirate/extensions/Bridge.java @@ -0,0 +1,7 @@ +package com.github.blindpirate.extensions; + +public class Bridge { + public static Object newCaptureSystemOutputExtension(){ + return new CaptureSystemOutputExtension(); + } +} diff --git a/src/main/java/com/github/hcsp/encapsulation/Main.java b/src/main/java/com/github/hcsp/encapsulation/Main.java index d895fc5..d9fc6f0 100644 --- a/src/main/java/com/github/hcsp/encapsulation/Main.java +++ b/src/main/java/com/github/hcsp/encapsulation/Main.java @@ -1,16 +1,19 @@ package com.github.hcsp.encapsulation; -import com.github.blindpirate.extensions.CaptureSystemOutputExtension; +import com.github.blindpirate.extensions.Bridge; public class Main { public static void main(String[] args) { System.out.println(createCaptureSystemOutputExtension().getClass().getName()); } + + public static Object createCaptureSystemOutputExtension() { // 因为CaptureSystemOutputExtension是包级私有的,因此无法直接创建它 // https://github.com/blindpirate/junit5-capture-system-output-extension/blob/4ee3aa0a0d9b2610b482e4571ecc33828c60248a/src/main/java/com/github/blindpirate/extensions/CaptureSystemOutputExtension.java#L44 // 想办法绕过这个限制,创建一个这样的实例。提示:你可以创建一些别的类和别的方法,并不一定非要在这个类中完成这件事。祝你好运! - return new CaptureSystemOutputExtension(); +// 的类和别的方法,并不一定非要在这个类中完成这件事。祝你好运! + return new Bridge().newCaptureSystemOutputExtension(); } }