I have just started Unit Testing in android
placed my TEST folder under src so the path is like /src/TEST.
My /src/main/java/com/example/prabhu/mathapplication consists of my activities and java classes.
I just want to run a test to check wether a method gets executed or it doesn't but I am unable to resolve this ERROR which to my understanding is due to not finding the link.So while writing tests how do I resolve this and how to use mocks for this.
MY TEST CODE IS :
/**
* Created by prabhu on 12/05/15.
*/
import com.example.prabhu.mathapplication.CalcNative;
import com.example.prabhu.mathapplication.MainActivity;
import junit.framework.TestCase;
import org.junit.After;
import org.junit.Before;
import org.junit.*;
public class MyAdderTest extends TestCase {
private MainActivity mMyAdder;
// private CalcNative do_calculation_in_native;
int x,y;
@Before
public void setUp() throws Exception {
// Code that you wish to run before each test
mMyAdder = new MainActivity();
// do_calculation_in_native = new CalcNative();
x=2;
y=3;
}
@After
public void tearDown() throws Exception {
// Code that you wish to run after each test
}
@Test
public void testAdd() {
mMyAdder.iterate_java(9999,9999,9999);
// boolean x = do_calculation_in_native.perform_calculations(1234,1234,1234);
int z = x+y;
assertEquals(z,5);
// assertEquals(true,x);
}
}
I don't get any errors if I comment out the lines containing the class and test cases work ...
The error is :
java.lang.UnsatisfiedLinkError: no CalcNative in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1119)
at com.example.prabhu.mathapplication.MainActivity.<clinit>(MainActivity.java:118)
at MyAdderTest.setUp(MyAdderTest.java:22)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:212)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
MY PROJECT STRUCTURE IS BELOW :
The MainActivity.java is as follows :
package com.example.prabhu.mathapplication;
import android.app.ActivityManager;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
RadioButton jni_radio,java_radio;
EditText number1,number2,iterate;
int input_number1,input_number_2,iterator,increment;
Boolean check_operations;
TextView add_number,diff_between,product_of,divided_by;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
jni_radio = (RadioButton)findViewById(R.id.radioButton);
java_radio = (RadioButton)findViewById(R.id.radioButton2);
number1 =(EditText)findViewById(R.id.editText);
number2 = (EditText)findViewById(R.id.editText2);
iterate = (EditText)findViewById(R.id.editText3);
try
{
input_number1 = Integer.parseInt(number1.getText()+"");
input_number_2 = Integer.parseInt(number2.getText()+"");
iterator = Integer.parseInt(iterate.getText()+"");
}catch (Exception e)
{
}
if(java_radio.isChecked())
{
iterate_java(input_number1,input_number_2,iterator);
}
else if(jni_radio.isChecked())
{
check_operations = (Boolean) CalcNative.perform_calculations(input_number1,input_number_2,iterator);
}
}
public static void iterate_java(int input_number1,int input_number_2,int iterator)
{
for(int increment = 0;increment<iterator;increment++)
{
int l = input_number1+input_number_2;
int j = input_number1-input_number_2;
int k = (input_number1*input_number_2);
int i = input_number1/input_number_2;
}
}
static
{
System.loadLibrary("CalcNative");
}