मैं एंड्रॉइड मार्शमलो ऐप पर यूनिट परीक्षणों के लिए इसका उपयोग करने के लिए रोबोलेक्ट्रिक सीखना चाहता हूं। मैंने कुछ आसान तरीकों से अनुमति देने के लिए PermissionHelper
लिखा था। (मार्शमलो अनुमति के लिए एंड्रॉइड रोबोलेक्ट्रिक यूनिट टेस्ट हैल्पर
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class)
public class PermissionHelperTest {
private PermissionHelper permissionHelper;
private ShadowApplication application;
@Before
public void setup() {
PictureActivity activity = Robolectric.buildActivity(PictureActivity.class).get();
permissionHelper = new PermissionHelper(activity, activity, 1);
application = new ShadowApplication();
}
@Test
public void testHasPermission() throws Exception {
String[] permissions = new String[]{Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE};
boolean hasPermissions = permissionHelper.hasPermissions(permissions);
Assert.assertEquals(false, hasPermissions);
application.grantPermissions(permissions);
hasPermissions = permissionHelper.hasPermissions(permissions);
Assert.assertEquals(true, hasPermissions);
}
}
पहले जोर काम करता है:
public static boolean hasPermissions(Activity activity, String[] permissions) {
for (String permission : permissions) {
int status = ActivityCompat.checkSelfPermission(activity, permission);
if (status == PackageManager.PERMISSION_DENIED) {
return false;
}
}
return true;
}
यहाँ Robolectric परीक्षण है कि मैं अब तक लिखा है: इस वर्ग के लिए इकाई परीक्षण के साथ आरंभ करने के लिए, मैं सबसे सरल विधि का परीक्षण करने के कोशिश कर रहा हूँ कोई अनुमति नहीं दी गई)। लेकिन छाया अनुप्रयोग के माध्यम से सभी अनुमतियां देने के बाद भी उन्हें अगले आर्ट में अस्वीकार कर दिया जाता है।
मुझे लगता है कि PictureActivity
Robolectric.buildActivity()
के साथ बनाया गया अनुमति अनुमति के लिए छाया अनुप्रयोग का उपयोग नहीं कर रहा है। लेकिन PictureActivity.getApplication()
मुझे grantPermissions
पर कॉल करने के लिए ShadowApplication
नहीं देता है। मैं इसका परीक्षण कैसे कर सकता हूं?
मैं एंड्रॉइड पर रोबोलेक्ट्रिक और यूनिट परीक्षण के लिए नया हूं ... इसलिए यदि कोई अन्य ढांचा है जो इसे आसान/संभव बनाता है: मैं सुझावों के लिए खुला हूं।
हां, यह काम किया! धन्यवाद। परिवर्तन के बाद मुझे एक और त्रुटि मिली कि एंड्रॉइड एचटीपी क्लाइंट गुम है, लेकिन यह एक आसान फिक्स है जिस पर चर्चा की गई है: https://github.com/robolectric/robolectric/issues/1862 – muetzenflo