Skip to content

Commit cf7130c

Browse files
committed
Removed reflection from Crashlytics smoke tests.
1 parent 6675140 commit cf7130c

File tree

4 files changed

+16
-14
lines changed

4 files changed

+16
-14
lines changed

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/FirebaseCrashlytics.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public class FirebaseCrashlytics {
8484

8585
final ExecutorService crashHandlerExecutor =
8686
ExecutorUtils.buildSingleThreadExecutorService("Crashlytics Exception Handler");
87+
8788
final CrashlyticsCore core =
8889
new CrashlyticsCore(
8990
app,
@@ -156,7 +157,8 @@ public Void call() throws Exception {
156157
return new FirebaseCrashlytics(core);
157158
}
158159

159-
private final CrashlyticsCore core;
160+
// package-private for smoke tests
161+
final CrashlyticsCore core;
160162

161163
private FirebaseCrashlytics(@NonNull CrashlyticsCore core) {
162164
this.core = core;

firebase-crashlytics/src/main/java/com/google/firebase/crashlytics/internal/common/CrashlyticsCore.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import android.util.Log;
2020
import androidx.annotation.NonNull;
2121
import androidx.annotation.Nullable;
22+
import androidx.annotation.VisibleForTesting;
2223
import com.google.android.gms.tasks.Task;
2324
import com.google.android.gms.tasks.Tasks;
2425
import com.google.firebase.FirebaseApp;
@@ -76,10 +77,12 @@ public class CrashlyticsCore {
7677
private boolean didCrashOnPreviousExecution;
7778

7879
private CrashlyticsController controller;
79-
8080
private final IdManager idManager;
81-
private final BreadcrumbSource breadcrumbSource;
81+
82+
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
83+
public final BreadcrumbSource breadcrumbSource;
8284
private final AnalyticsEventLogger analyticsEventLogger;
85+
8386
private final ExecutorService crashHandlerExecutor;
8487
private final CrashlyticsBackgroundWorker backgroundWorker;
8588

smoke-tests/src/main/java/com/google/firebase/testing/CrashlyticsTest.java renamed to smoke-tests/src/main/java/com/google/firebase/crashlytics/CrashlyticsTest.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,27 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
package com.google.firebase.testing;
15+
package com.google.firebase.crashlytics;
1616

1717
import static com.google.common.truth.Truth.assertThat;
1818

1919
import android.os.Bundle;
2020
import androidx.test.core.app.ApplicationProvider;
2121
import com.google.firebase.analytics.FirebaseAnalytics;
22-
import com.google.firebase.crashlytics.FirebaseCrashlytics;
2322

2423
import androidx.test.runner.AndroidJUnit4;
2524
import com.google.firebase.crashlytics.internal.breadcrumbs.BreadcrumbSource;
25+
import com.google.firebase.crashlytics.internal.common.CrashlyticsCore;
2626
import java.lang.reflect.Field;
2727
import java.util.concurrent.CountDownLatch;
2828
import java.util.concurrent.TimeUnit;
2929
import org.junit.Test;
3030
import org.junit.runner.RunWith;
3131

32+
/**
33+
* This class is in the com.google.firebase.crashlytics package to access FirebaseCrashlytics's
34+
* package-private fields.
35+
**/
3236
@RunWith(AndroidJUnit4.class)
3337
public final class CrashlyticsTest {
3438

@@ -37,15 +41,7 @@ public void analyticsIntegration() {
3741
// Validates that Firebase Analytics and Crashlytics interoperability is working, by confirming
3842
// that events sent to Firebase Analytics are received by the Crashlytics breadcrumb handler.
3943
try {
40-
// need to use reflection to get the breadcrumb handler.
41-
FirebaseCrashlytics crashlytics = FirebaseCrashlytics.getInstance();
42-
Field coreField = crashlytics.getClass().getDeclaredField("core");
43-
coreField.setAccessible(true);
44-
Object core = coreField.get(crashlytics);
45-
Field breadcrumbSourceField = core.getClass().getDeclaredField("breadcrumbSource");
46-
breadcrumbSourceField.setAccessible(true);
47-
BreadcrumbSource breadcrumbSource = (BreadcrumbSource)breadcrumbSourceField.get(core);
48-
44+
BreadcrumbSource breadcrumbSource = FirebaseCrashlytics.getInstance().core.breadcrumbSource;
4945
final CountDownLatch eventReceivedLatch = new CountDownLatch(1);
5046
breadcrumbSource.registerBreadcrumbHandler(breadcrumbHandler -> {
5147
eventReceivedLatch.countDown();

smoke-tests/src/main/java/com/google/firebase/testing/TestSuite.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
package com.google.firebase.testing;
1616

17+
import com.google.firebase.crashlytics.CrashlyticsTest;
1718
import org.junit.runner.RunWith;
1819
import org.junit.runners.Suite;
1920

0 commit comments

Comments
 (0)