Skip to content

Commit bda28e9

Browse files
authored
Merge pull request #146 from sentry-demos/new_tests
Adding a coverage report for android
2 parents a642574 + 71280d3 commit bda28e9

File tree

6 files changed

+107
-19
lines changed

6 files changed

+107
-19
lines changed

.github/workflows/codecov-report.yml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# uploading codecov report
2+
3+
name: Upload Codecov Report
4+
5+
on: [push, pull_request]
6+
7+
jobs:
8+
test:
9+
runs-on: macOS-latest
10+
11+
steps:
12+
- uses: actions/checkout@v2
13+
- uses: actions/setup-java@v2
14+
with:
15+
distribution: 'adopt'
16+
java-version: 15.0.2
17+
- name: Build and run unit tests
18+
run: |
19+
./gradlew build jacocoTestReport
20+
env:
21+
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
22+
- name: Upload coverage reports to Codecov
23+
uses: codecov/codecov-action@v4
24+
with:
25+
token: ${{ secrets.CODECOV_TOKEN }}
26+
fail_ci_if_error: true
27+
verbose: true

app/build.gradle

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ buildscript {
44
ext.kotlin_version= '1.8.20'
55
dependencies {
66
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
7+
classpath('com.mxalbert.gradle:jacoco-android:0.2.1')
78
}
89
repositories {
910
mavenCentral()
@@ -12,24 +13,19 @@ buildscript {
1213

1314
plugins {
1415
id "io.sentry.android.gradle" version "4.10.0"
16+
id 'com.android.application'
17+
id 'kotlin-android'
18+
id 'com.ydq.android.gradle.native-aar.import'
19+
id 'jacoco'
20+
id 'com.mxalbert.gradle.jacoco-android' version '0.2.1'
1521
}
1622

17-
apply plugin: 'com.android.application'
18-
apply plugin: 'com.ydq.android.gradle.native-aar.import'
19-
apply plugin: 'io.sentry.android.gradle'
20-
apply plugin: 'kotlin-android'
21-
//apply plugin: 'fullstory'
22-
2323
//fullstory {
2424
// org 'QNEN8'
2525
// enabledVariants 'all'
2626
// logLevel 'off'
2727
//}
2828

29-
task wrapper(type: org.gradle.api.tasks.wrapper.Wrapper) {
30-
gradleVersion = '7.0'
31-
}
32-
3329
android {
3430
compileSdkVersion 31
3531

@@ -45,6 +41,7 @@ android {
4541
versionCode 46
4642
versionName "2.11.0"
4743

44+
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
4845
externalNativeBuild {
4946
cmake {
5047
arguments.add(0, "-DANDROID_STL=c++_static")
@@ -83,8 +80,6 @@ android {
8380
lintOptions {
8481
abortOnError false
8582
}
86-
ndkVersion '21.3.6528147'
87-
8883
}
8984

9085
dependencies {
@@ -96,7 +91,7 @@ dependencies {
9691
implementation 'androidx.navigation:navigation-ui:2.5.3'
9792
implementation 'com.android.support:support-core-utils:28.0.0'
9893
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
99-
implementation 'junit:junit:4.12'
94+
implementation 'junit:junit:4.13.2'
10095
implementation 'com.google.code.gson:gson:2.10.1'
10196
def fragment_version = "1.5.6"
10297
// Java language implementation
@@ -111,6 +106,27 @@ dependencies {
111106
implementation "androidx.room:room-runtime:$room_version"
112107
annotationProcessor "androidx.room:room-compiler:$room_version"
113108
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
109+
110+
testImplementation 'org.jetbrains:annotations:23.0.0'
111+
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit:1.8.0'
112+
testImplementation 'org.robolectric:robolectric:4.10.3'
113+
testImplementation 'org.mockito.kotlin:mockito-kotlin:4.1.0'
114+
testImplementation 'androidx.test:core:1.4.0'
115+
testImplementation 'androidx.test.ext:junit:1.1.3'
116+
testImplementation 'androidx.test:runner:1.4.0'
117+
118+
// JUnit 5 dependencies
119+
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2'
120+
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2'
121+
}
122+
123+
jacoco {
124+
toolVersion = "0.8.10"
125+
}
126+
127+
tasks.withType(Test) {
128+
jacoco.includeNoLocationClasses = true // is this necessary
129+
jacoco.excludes = ['jdk.internal.*'] // is this necessary
114130
}
115131

116132
sentry {

app/src/main/java/com/example/vu/android/empowerplant/MainFragment.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ public void onItemClick(StoreItem storeItem) {
206206
adapter.notifyDataSetChanged();
207207
}
208208

209-
private void processGetToolsResponse(String body) {
209+
void processGetToolsResponse(String body) {
210210

211211
JSONObject jsonObject = null;
212212
try {
@@ -271,7 +271,7 @@ private void processProducts() {
271271
}
272272
}
273273

274-
private int getIterator(int n) {
274+
int getIterator(int n) {
275275
if (n <= 0) {
276276
return 0;
277277
}
@@ -281,7 +281,7 @@ private int getIterator(int n) {
281281
return getIterator(n-1) + getIterator(n-2);
282282
}
283283

284-
private String getEmpowerPlantDomain() {
284+
String getEmpowerPlantDomain() {
285285
String domain = null;
286286
try {
287287
final ApplicationInfo appInfo = getActivity().getApplicationContext().getPackageManager().getApplicationInfo(getActivity().getApplicationContext().getPackageName(),
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.example.vu.android.empowerplant;
2+
3+
import android.content.Context;
4+
5+
import org.junit.Before;
6+
import org.junit.Test;
7+
import org.mockito.Mock;
8+
import org.mockito.MockitoAnnotations;
9+
10+
import static org.junit.jupiter.api.Assertions.assertEquals;
11+
import static org.mockito.Mockito.anyInt;
12+
import static org.mockito.Mockito.when;
13+
14+
public class MainFragmentTest {
15+
16+
@Mock
17+
Context mockContext;
18+
19+
private MainFragment mainFragment;
20+
21+
@Before
22+
public void setUp() {
23+
MockitoAnnotations.initMocks(this);
24+
mainFragment = new MainFragment();
25+
mainFragment.onAttach(mockContext);
26+
}
27+
28+
@Test
29+
public void testGetEmpowerPlantDomain() {
30+
String domain = "https://application-monitoring-flask-dot-sales-engineering-sf.appspot.com";
31+
when(mockContext.getString(anyInt())).thenReturn(domain);
32+
33+
String result = mainFragment.getEmpowerPlantDomain();
34+
35+
assertEquals("", "");
36+
}
37+
38+
@Test
39+
public void testGetIterator() {
40+
assertEquals(0, mainFragment.getIterator(0));
41+
}
42+
}

build.gradle

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ buildscript {
99
maven { url "https://maven.fullstory.com" }
1010
}
1111
dependencies {
12-
classpath 'com.android.tools.build:gradle:7.0.3'
13-
classpath 'com.ydq.android.gradle.build.tool:nativeBundle:1.0.7'
12+
classpath 'com.android.tools.build:gradle:7.4.2'
13+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.0"
14+
classpath "io.github.howardpang:androidNativeBundle:1.1.4"
1415
classpath 'com.fullstory:gradle-plugin-local:1.12.1'
1516
}
1617
}
@@ -19,6 +20,7 @@ allprojects {
1920
repositories {
2021
google()
2122
jcenter()
23+
mavenCentral()
2224
}
2325
}
2426

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
#Thu Aug 01 11:14:39 CEST 2024
12
distributionBase=GRADLE_USER_HOME
23
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
4+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
45
zipStoreBase=GRADLE_USER_HOME
56
zipStorePath=wrapper/dists

0 commit comments

Comments
 (0)