Click here to Skip to main content
15,881,803 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
Hi guys , i wrote some junit tests for my mergesort class, but i don't know how to write a test for a array with 100 000 Element , any Idea?
Java
<pre>

What I have tried:

<pre lang="java"><pre>p

import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertThrows;
import org.junit.jupiter.api.Test;
import de.hska.iwi.ads.sorting.Sort;
import java.util.Arrays;

public class MergesortTest extends SortTest {

	@Override
	public <E extends Comparable<E>> Sort<E> createSort() {
		return new Mergesort<E>();
	}

//Test für Integer
	@Test
	void testMergesortInteger() {
		Integer[] a = { 2, 1, 7, 12, 5, 9, 8, 10 };
		Integer[] result = { 1, 2, 5, 7, 8, 9, 10, 12 };

		Mergesort<Integer> ms = new Mergesort<Integer>();
		ms.sort(a);
		assertTrue(Arrays.equals(a, result));
	}

	@Test
	void testMergesortInteger1() {
		Integer[] a = { 5, 2, 1, 2, 5, 4, 2 };
		Integer[] result = { 1, 2, 2, 2, 4, 5, 5 };

		Mergesort<Integer> ms = new Mergesort<Integer>();
		ms.sort(a);
		assertTrue(Arrays.equals(a, result));
	}

//Test für String
	@Test
	void testMergesortString() {
		String[] a = { "r", "a", "b", "d" };
		String[] result = { "a", "b", "d", "r" };

		Mergesort<String> ms = new Mergesort<String>();
		ms.sort(a);
		assertTrue(Arrays.equals(a, result));
	}

	@Test
	void testMergesortString1() {
		String[] a = { "baby", "a", "king", "to", "music", "blue" };
		String[] result = { "a", "baby", "blue", "king", "music", "to" };

		Mergesort<String> ms = new Mergesort<String>();
		ms.sort(a);
		assertTrue(Arrays.equals(a, result));
	}

//Test für null
	@Test
	void testMergesortIntArrayIntNull() {
		Integer[] a = null;
		Mergesort<Integer> ms = new Mergesort<Integer>();
		assertThrows(NullPointerException.class, () -> ms.sort(a));
	}



//test for one element
	@Test
	void testMergesortOneElement() {
		Integer[] a = { 5 };
		Integer[] result = { 5 };

		Mergesort<Integer> ms = new Mergesort<Integer>();
		ms.sort(a);
		assertTrue(Arrays.equals(a, result));

	}

	// test for two element
	@Test
	void testMergesortTwoElement() {
		Integer[] a = { 5, 3 };
		Integer[] result = { 3, 5 };

		Mergesort<Integer> ms = new Mergesort<Integer>();
		ms.sort(a);
		assertTrue(Arrays.equals(a, result));

	}

	// test for 100.000 Element
Posted
Updated 8-May-19 0:29am
Comments
[no name] 5-May-19 17:00pm    
What's special about 100,000? Why not a bazillion?
Member 14076805 6-May-19 2:33am    
Nothing . main thing is a very big number of elements
[no name] 6-May-19 9:03am    
Why a "very big number"? What are you "testing" for? How will you confirm the results of your test?
Kornfeld Eliyahu Peter 6-May-19 5:54am    
It sounds you try to use unit-test for performance test - do not!

1 solution

Well despite the fact that you're trying to use unittests for wrong task, you could try first generating random sequence of numbers (or whatever you want), then using well-tested sorting algorithm to calculate expected result and then use it as assertion target as usual.

It's quite strange for unittesting but still it will work.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900