Тут всё Ясно

задание: Разработать консольный калькулятор, умеющий делать +, -, /, *. В проект с Maven добавить тесты на весь функционал калькулятора. добавить Cucumber . Подсказки:Лучше реализовать в разных классах логику вычислений и логику обработки введенных символов. Требования 1.Числа и знак операции вводятся в консоль 2.При делении на 0, вылетает эксепшн. 3.Числа типа integer 6.Первый тест сьют содержит тесты без DataProvider 7.Второй содержит тесты с DataProvider 8.Тесты должны быть позитивные и негативные. 9.Тесты должны проверять вывод exceptions. 10.Тесты покрывают весь функционал калькулятора.

Пройдите быструю авторизацию для просмотра:

Продолжая, вы даете согласие на обработку персональных данных, соглашаетесь с условиями использования cookies, а также подтверждаете ознакомление с публичной офертой.

Шаг 1: Создание класса Calculator для логики вычислений

public class Calculator {
    
    public int add(int a, int b) {
        return a + b;
    }
    
    public int subtract(int a, int b) {
        return a - b;
    }
    
    public int multiply(int a, int b) {
        return a * b;
    }
    
    public int divide(int a, int b) {
        if (b == 0) {
            throw new ArithmeticException("Division by zero is not allowed");
        }
        return a / b;
    }
}

Шаг 2: Создание класса CalculatorApp для взаимодействия с пользователем через консоль

import java.util.Scanner;

public class CalculatorApp {
    
    public static void main(String[] args) {
        Calculator calculator = new Calculator();
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("Enter first number: ");
        int a = scanner.nextInt();
        
        System.out.print("Enter operation (+, -, *, /): ");
        char operation = scanner.next().charAt(0);
        
        System.out.print("Enter second number: ");
        int b = scanner.nextInt();
        
        int result = 0;
        switch (operation) {
            case '+':
                result = calculator.add(a, b);
                break;
            case '-':
                result = calculator.subtract(a, b);
                break;
            case '*':
                result = calculator.multiply(a, b);
                break;
            case '/':
                result = calculator.divide(a, b);
                break;
            default:
                System.out.println("Invalid operation");
        }
        
        System.out.println("Result: " + result);
        
        scanner.close();
    }
}

Шаг 3: Создание тестов с использованием JUnit и DataProvider

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

public class CalculatorTest {
    
    Calculator calculator = new Calculator();
    
    @Test
    public void testAdd() {
        assertEquals(5, calculator.add(2, 3));
    }
    
    @Test
    public void testSubtract() {
        assertEquals(2, calculator.subtract(5, 3));
    }
    
    @Test
    public void testMultiply() {
        assertEquals(15, calculator.multiply(5, 3));
    }
    
    @Test
    public void testDivide() {
        assertEquals(2, calculator.divide(6, 3));
    }
    
    @Test(expected = ArithmeticException.class)
    public void testDivideByZero() {
        calculator.divide(6, 0);
    }
}

Шаг 4: Добавление зависимостей в файл pom.xml для использования Cucumber

<dependencies>
    <!-- JUnit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    
    <!-- Cucumber -->
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>7.0.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>7.0.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Шаг 5: Создание файлов сценариев для Cucumber (например, Calculator.feature)

Feature: Calculator
  Scenario: Addition
    Given I have entered 2 into the calculator
    And I have entered 3 into the calculator
    When I press add
    Then the result should be 5 on the screen
    
  Scenario: Division by zero
    Given I have entered 6 into the calculator
    And I have entered 0 into the calculator
    When I press divide
    Then an error message should be displayed

Шаг 6: Создание Step Definitions для Cucumber

import io.cucumber.java.en.Given;
import io.cucumber.java.en.When;
import io.cucumber.java.en.Then;
import static org.junit.Assert.assertEquals;

public class StepDefinitions {
    
    Calculator calculator = new Calculator();
    int result;
    
    @Given("I have entered {int} into the calculator")
    public void enterNumber(int number) {
        // Implement logic to enter number into calculator
    }
    
    @When("I press add")
    public void pressAdd() {
        result = calculator.add(2, 3);
    }
    
    @When("I press divide")
    public void pressDivide() {
        try {
            result = calculator.divide(6, 0);
        } catch (ArithmeticException e) {
            // Handle division by zero error
        }
    }
    
    @Then("the result should be {int} on the screen")
    public void checkResult(int expectedResult) {
        assertEquals(expectedResult, result);
    }
    
    @Then("an error message should be displayed")
    public void checkErrorMessage() {
        // Implement logic to check for error message
    }
}

Теперь у вас есть консольный калькулятор с тестами на весь функционал, включая использование Cucumber для BDD тестирования.

Обратите внимание: ответы, предоставляемые искусственным интеллектом, могут не всегда быть точными. Не рассчитывайте на них в критически важных областях, таких как медицина, юриспруденция, финансы или в вопросах, связанных с безопасностью. Для важных решений всегда обращайтесь к квалифицированным специалистам. Администрация сайта не несет ответственности за контент, сгенерированный автоматически.

Напишите нам, если в вопросе есть ваши персональные данные ([email protected])

Последние вопросы

  • Напиши одну главу диплома по теме чат бот активный туризм Калининградской области и основные значения библиотек для создания чат бота
  • Анализ затрат производства керамогранита в динамике по исходным данным, приведенным в табл. 1. Таблица: Сравнение доходов компаний по производству плитки и керамики Показатель 2020 2021
  • Анализ затрат производства керамогранита в динамике по исходным данным, приведенным в табл. 1. Таблица: Сравнение доходов компаний по производству плитки и керамики Показатель 2020 2021
  • играя в гта 5 рп - Тайрон - член банды из Дэвиса. После нескольких месяцев продажи наркотиков он решает вложить накопленный капитал и открыть ночной клуб в центре Вайнвуда. Тайрон устанавливает связи
  • Существуют-ли телепаты параллельных миров, и что они представляют собой?
  • Существует-ли научное объяснение сбоев матрицы, и что оно представляет собой?