Как я могу использовать Ashesis (JUnit) для проверки int? - PullRequest
0 голосов
/ 10 октября 2019

Я работаю над тестированием метода с типом данных int. Он принимает 2 дюйма в качестве своих параметров и возвращает большее число. Как мне правильно вызвать это из моего тестового пакета? Вот мой код:

public void testFindMaxNum()
{
    assertEquals("findMaxNum(FAILS)", ProgrammingProject4.findMaxNum(1,2),1);
    assertEquals("findMaxNum(PASS)", ProgrammingProject4.findMaxNum(1,2),;
}

1 Ответ

0 голосов
/ 10 октября 2019

Без кода, который это вызывает (findMaxNum), трудно быть полностью точным в моем ответе. Однако, похоже, что вам не хватает некоторых аннотаций из вашего класса Test.

Я собираюсь предположить, что сигнатура вашего метода findMaxNum выглядит следующим образом:

public int findMaxNum(int i, int j)

На основании этоговаш тестовый код должен выглядеть примерно так:

import static org.junit.Assert.assertEquals;
import org.junit.Test;

public class ProgrammingProject4Test {

  @Test
  public void testFindMaxNumFirst() {
    // Arrange
    ProgrammingProject4 programmingProject4 = new ProgrammingProject4();

    // Act and Assert
    assertEquals("First number should be bigger than second",2, programmingProject4.findMaxNum(1,2));
  }

  @Test
  public void testFindMaxNumSecond() {
    // Arrange
    ProgrammingProject4 programmingProject4 = new ProgrammingProject4();

    // Act and Assert
    assertEquals("Second number should be bigger,2, programmingProject4.findMaxNum(2,1));
  }
}

Несколько моментов, которые следует отметить из вашего кода:

  1. Вам не хватает аннотаций для инфраструктуры тестирования, например, @Test. Это означает, что ваш инструмент сборки не сможет найти и запустить тесты.
  2. У вас есть ожидаемый результат после результата метода. В JUnit утверждает, что они должны быть другим способом (согласно моему примеру).
  3. Ваш код выполняет два теста в одном методе. Это плохая практика, потому что это затрудняет отладку тестов. Также, если первое утверждение не выполнено, второе не будет выполнено. Поэтому лучше разделить два теста на два разных метода.

Вы можете взглянуть на игровую площадку Diffblue (полное раскрытие, я работаю для Diffblue), это инструмент, который будет писать модульные тесты для небольшогообразец куска кода Java. https://playground.diffblue.com

Надеюсь, все это имеет смысл. В ответе немало пунктов. Не стесняйтесь комментировать, если что-то нуждается в разъяснении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...