• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2012 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.test.runner;
17 
18 import android.content.Context;
19 import android.os.Bundle;
20 
21 import com.google.testing.littlemock.LittleMock;
22 import com.google.testing.littlemock.Mock;
23 
24 import org.junit.Before;
25 import org.junit.Test;
26 
27 import java.io.ByteArrayOutputStream;
28 import java.io.PrintStream;
29 
30 /**
31  * Unit tests for {@link AndroidJUnitRunner}.
32  */
33 public class AndroidJUnitRunnerTest {
34 
35     private AndroidJUnitRunner mAndroidJUnitRunner;
36     private PrintStream mStubStream;
37     @Mock
38     private TestRequestBuilder mMockBuilder;
39     @Mock
40     private Context mMockContext;
41 
42     @Before
setUp()43     public void setUp() throws Exception {
44         mAndroidJUnitRunner = new AndroidJUnitRunner() {
45 
46 
47             @Override
48             TestRequestBuilder createTestRequestBuilder(PrintStream writer,
49                     String... packageCodePaths) {
50                 return mMockBuilder;
51             }
52 
53             @Override
54             public Context getContext() {
55                 return mMockContext;
56             }
57         };
58         mStubStream = new PrintStream(new ByteArrayOutputStream());
59         LittleMock.initMocks(this);
60     }
61 
62     /**
63      * Test {@link AndroidJUnitRunner#buildRequest(Bundle, PrintStream)} when
64      * a single class name is provided.
65      */
66     @Test
testBuildRequest_singleClass()67     public void testBuildRequest_singleClass() {
68         Bundle b = new Bundle();
69         b.putString(AndroidJUnitRunner.ARGUMENT_TEST_CLASS, "ClassName");
70         LittleMock.doNothing().when(mMockBuilder).addTestClass("ClassName");
71         mAndroidJUnitRunner.buildRequest(b, mStubStream);
72         LittleMock.verify(mMockBuilder);
73     }
74 
75     /**
76      * Test {@link AndroidJUnitRunner#buildRequest(Bundle, PrintStream)} when
77      * multiple class names are provided.
78      */
79     @Test
testBuildRequest_multiClass()80     public void testBuildRequest_multiClass() {
81         Bundle b = new Bundle();
82         b.putString(AndroidJUnitRunner.ARGUMENT_TEST_CLASS, "ClassName1,ClassName2");
83         LittleMock.doNothing().when(mMockBuilder).addTestClass("ClassName1");
84         LittleMock.doNothing().when(mMockBuilder).addTestClass("ClassName2");
85         mAndroidJUnitRunner.buildRequest(b, mStubStream);
86         LittleMock.verify(mMockBuilder);
87     }
88 
89     /**
90      * Test {@link AndroidJUnitRunner#buildRequest(Bundle, PrintStream)} when
91      * class name and method name is provided.
92      */
93     @Test
testBuildRequest_method()94     public void testBuildRequest_method() {
95         Bundle b = new Bundle();
96         b.putString(AndroidJUnitRunner.ARGUMENT_TEST_CLASS, "ClassName1#method");
97         LittleMock.doNothing().when(mMockBuilder).addTestMethod("ClassName1", "method");
98         mAndroidJUnitRunner.buildRequest(b, mStubStream);
99         LittleMock.verify(mMockBuilder);
100     }
101 }
102