title: NoClassDefFoundError while trying to run unit tests on Android Studio
body: <p>I'm trying to create some simple tests for my Android app but I'm running into issues with getting the tests to even run. I keep getting a NoClassDefFound error while I'm trying to run the test, however I can't seem to figure out what the cause of it is. I'd appreciate it if I could get a fresh pair of eyes to look at this.</p>
  
  <p>EDIT: Here is a picture of the structure:</p>
  
  <p><img src="https://i.imgur.com/8nlum82.png" alt="Link"></p>
  
  <p>Here's the error that I keep getting:</p>
  
  <pre><code>junit.framework.AssertionFailedError: Exception in constructor: testScanResultNotNull (java.lang.NoClassDefFoundError: nl.hanze.myhealth.ScanResultActivity
  at nl.hanze.myhealth.CameraTest.&lt;init&gt;(CameraTest.java:14)
  at java.lang.reflect.Constructor.constructNative(Native Method)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
  at junit.runner.BaseTestRunner.getTest(BaseTestRunner.java:118)
  at android.test.AndroidTestRunner.getTest(AndroidTestRunner.java:149)
  at android.test.AndroidTestRunner.setTestClassName(AndroidTestRunner.java:57)
  at android.test.suitebuilder.TestSuiteBuilder.addTestClassByName(TestSuiteBuilder.java:80)
  at android.test.InstrumentationTestRunner.parseTestClass(InstrumentationTestRunner.java:443)
  at android.test.InstrumentationTestRunner.parseTestClasses(InstrumentationTestRunner.java:424)
  at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:370)
  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4435)
  at android.app.ActivityThread.access$1300(ActivityThread.java:141)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
  at android.os.Handler.dispatchMessage(Handler.java:99)
  at android.os.Looper.loop(Looper.java:137)
  at android.app.ActivityThread.main(ActivityThread.java:5103)
  at java.lang.reflect.Method.invokeNative(Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
  at dalvik.system.NativeStart.main(Native Method)
  )
  at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
  at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
  at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
  at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)
  </code></pre>
  
  <p>CameraTest</p>
  
  <pre><code>package nl.hanze.myhealth;
  
  import android.test.ActivityInstrumentationTestCase2;
  import android.test.suitebuilder.annotation.SmallTest;
  
      public class CameraTest extends ActivityInstrumentationTestCase2&lt;ScanResultActivity&gt; {
  
          ScanResultActivity mActivity;
  
          public CameraTest(){
              super(ScanResultActivity.class);
          }
  
          @Override
          protected void setUp()throws Exception{
              super.setUp();
              mActivity = getActivity();
          }
  
          @SmallTest
          public void testScanResultNotNull(){
              boolean test = mActivity.generateScanResult();
              assertNotNull(test);
          }
  
          @Override
          protected void tearDown() throws Exception{
              super.tearDown();
          }
      }
  </code></pre>
  
  <p>ScanResultActivity</p>
  
  <pre><code>package nl.hanze.myhealth;
  
  import android.app.Activity;
  import android.os.Bundle;
  import android.view.Menu;
  import android.view.MenuItem;
  
  import java.util.Random;
  
  
      public class ScanResultActivity extends Activity {
  
          Random rand = new Random();
  
          public ScanResultActivity(){
  
          }
  
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_scan_result);
          }
  
          @Override
          public boolean onCreateOptionsMenu(Menu menu) {
              // Inflate the menu; this adds items to the action bar if it is present.
              getMenuInflater().inflate(R.menu.scan_result, menu);
              return true;
          }
  
          @Override
          public boolean onOptionsItemSelected(MenuItem item) {
              // Handle action bar item clicks here. The action bar will
              // automatically handle clicks on the Home/Up button, so long
              // as you specify a parent activity in AndroidManifest.xml.
              int id = item.getItemId();
              if (id == R.id.action_settings) {
                  return true;
              }
              return super.onOptionsItemSelected(item);
          }
  
          protected boolean generateScanResult(){
              boolean positive_scanresult;
              int max = 10;
              int min = 1;
              int randomNum = rand.nextInt((max - min) + 1) + min;
              if(randomNum &gt;= 6){
                  positive_scanresult = true;
              }else{
                  positive_scanresult = false;
              }
              return positive_scanresult;
          }
      }
  </code></pre>