Я пытаюсь создать j-юнит-тесты для каждой функции ниже, но не знаю, с чего начать. В моем случае действительно сложно использовать саму функцию и протестировать ее внутри корпуса модуля. Я знаю только, как тестировать определенные значения / списки. Мне нужна помощь в понимании того, как тестировать сами функции.
public class FindValues {
/**
* @param args
*/
public static void main(String[] args) {
int[] x = new int[] {2,5,6};
int y = 2;
findLast(x, y);
int[] x1 = new int[] {1,2,0};
lastZero(x1,y);
int[] x2 = new int[] {-3, 3, 5, 0};
countPositive(x2,y);
int[] x3 = new int[] {-6, 2, -1, 1};
oddOrPos(x3);
}
// findlast(int [] x, int y) takes an array of integers and should return the index of
// the last element in the array that is equal to y.
public static int findLast(int [] x, int y) {
x = new int[]{2,5,6};
y = 2;
for (int i=x.length-1; i >= 0; i--) {
if (x[i] == y) {
// System.out.println(i);
return i;
}
}
return -1;
} //end FindLast
// lastZero(int [] x) takes an array of integers and should return the index of the last//0 in x.
public static int lastZero (int[] x, int y) {
x = new int[]{1,2,0};
for (int i = 0; i < x.length; i++)
{
if (x[i] == 0)
{
System.out.println(i);
}
}
return -1;
}
public static int countPositive (int[] x, int y) {
//Returns the number of positive elements in Xint count = 0;
x = new int[]{-3, 3, 5, 0};
int count = 0;
for (int i=0; i < x.length; i++) {
if (x[i] > 0) {
count++;
}
}
System.out.println(count);
return count;
}
public static int oddOrPos(int[] x) {
//Return numbers in x that are either odd or positive or both int count = 0;
int count = 0;
x = new int[]{-6, 2, -1, 1};
for (int i = 0; i < x.length; i++) {
if (x[i]% 2 == -1 || x[i]% 2 == 1 || x[i] > 0) {
count++;
}
}
System.out.println(count);
return count;
}
}




Вам следует начать с чтения Руководство пользователя JUnit и выполнения исследовать, чтобы найти примеры и учебные пособия.
По сути, вы хотите создать класс JUnit, который будет тестировать ваш класс FindValues. Обычно вы назвали бы этот класс в честь того, который тестируется. Например, FindValuesTest.
Я начну с очень простого теста, содержащего базовое утверждение, но я думаю, что вам стоит прочитать документацию и немного поиграть с JUnit. Если у вас есть сделал попытку при создании JUnit и вы застряли на чем-то, вам следует вернуться сюда, отредактировать свой вопрос, добавив свою попытку и все соответствующие детали проблемы, с которой вы столкнулись. (см. Как задать хороший вопрос)
Как и было обещано, вот очень простой пример для начала:
import static org.junit.Assert.*;
import org.junit.Test;
public class FindValuesTest {
@Test
public void test() {
int actualResult = FindValues.findLast(new int[]{1,2,3,4,2,5,8,2,9}, 2);
assertEquals(7, actualResult);
}
}
Обратите внимание, что я удалил ваши жестко заданные значения параметров в findLast:
public static int findLast(int[] x, int y) {
for (int i = x.length - 1; i >= 0; i--) {
if (x[i] == y) {
// System.out.println(i);
return i;
}
}
return -1;
}
Посмотрите, как тест предоставляет входные данные для вашего метода и утверждает, что выходные данные соответствуют ожиданиям - это то, для чего предназначен JUnit. Вы выполняете код, который хотите протестировать, и проверяете поведение этого кода на основе входных данных, предоставленных вашим тестом.