Merge Sort in Java with Test cases
One thing I noticed, the sorting routine is modifying the array and returning the array.  I would suggest either make the functions void or create a new array to do the merge in.  A sort function with a void return type automatically tells the user that the sort is in place.  Where as, a return type of an array, tells the user that a new array is created, but that the original array isn't touched.