首页 > 解决方案 > 寻找如何测试货币捷径是否正确的建议

问题描述

我正在编写一个程序,它使用简单的 API 将每种货币的值转换为另一种货币。我在开发这个简单的程序时一点问题都没有,但我目前正在努力测试它。我是一个 3 个月的程序员,所以不要因为代码质量而责备我 - 给我未来的提示。

我已经编写了一个测试来检查从每种货币到另一种货币的转换是否正确,现在我正在寻找一种方法来测试货币快捷方式(例如 EUR、PLN、JPY、AUD ..)是否正确,什么我的意思是当名称(AUR 或 JPU)不正确时,测试应该向我提供信息。我有一个“汇率”类,其中包含每种货币的 JSON 属性值。

package pl.sda.CurrencyConverter_RZ.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Rates {

    @JsonProperty("BGN")
    private Double BGN;

    @JsonProperty("NZD")
    private Double NZD;

    @JsonProperty("ILS")
    private Double ILS;

    @JsonProperty("RUB")
    private Double RUB;

    @JsonProperty("CAD")
    private Double CAD;

    @JsonProperty("USD")
    private Double USD;

    @JsonProperty("PHP")
    private Double PHP;

    @JsonProperty("CHF")
    private Double CHF;

    @JsonProperty("AUD")
    private Double AUD;

    @JsonProperty("JPY")
    private Double JPY;

    @JsonProperty("TRY")
    private Double TRY;

    @JsonProperty("HKD")
    private Double HKD;

    @JsonProperty("MYR")
    private Double MYR;

    @JsonProperty("HRK")
    private Double HRK;

    @JsonProperty("CZK")
    private Double CZK;

    @JsonProperty("IDR")
    private Double IDR;

    @JsonProperty("DKK")
    private Double DKK;

    @JsonProperty("NOK")
    private Double NOK;

    @JsonProperty("HUF")
    private Double HUF;

    @JsonProperty("GBP")
    private Double GBP;

    @JsonProperty("MXN")
    private Double MXN;

    @JsonProperty("THB")
    private Double THB;

    @JsonProperty("ISK")
    private Double ISK;

    @JsonProperty("ZAR")
    private Double ZAR;

    @JsonProperty("BRL")
    private Double BRL;

    @JsonProperty("SGD")
    private Double SGD;

    @JsonProperty("PLN")
    private Double PLN;

    @JsonProperty("INR")
    private Double INR;

    @JsonProperty("KRW")
    private Double KRW;

    @JsonProperty("RON")
    private Double RON;

    @JsonProperty("CNY")
    private Double CNY;

    @JsonProperty("SEK")
    private Double SEK;

    @JsonProperty("EUR")
    private Double EUR;


}
package pl.sda.CurrencyConverter_RZ.service;

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import pl.sda.CurrencyConverter_RZ.model.Currencies;

import java.math.BigDecimal;

import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertAll;
class CurrencyServiceTest {

    public static Currencies currencyValue = new Currencies();
    public static CurrencyService currencyService = new CurrencyService();

    @BeforeAll
    static void setUp() {

    }

    @Test
    @DisplayName("If conversion is correct by multiplying values")
    void shouldReturnTrueByMultiplying() {
        BigDecimal fromPLNtoEUR = currencyService
                .convertCurrencyValue(1, "PLN", "EUR", "2019-04-20", 4);
        BigDecimal fromEURtoPLN = currencyService
                .convertCurrencyValue(1, "EUR", "PLN", "2019-04-20", 4);
        assertAll(() -> assertThat((fromPLNtoEUR.multiply(fromEURtoPLN)).setScale(0, BigDecimal.ROUND_HALF_DOWN))
                .isEqualTo(BigDecimal.valueOf(1)),
                () -> assertThat((fromEURtoPLN.multiply(fromPLNtoEUR)).setScale(0, BigDecimal.ROUND_HALF_DOWN))
                        .isEqualTo(BigDecimal.valueOf(1)));
    }

//    @ParameterizedTest   // <- to check if its needed
//    @CsvSource({"AUD", "JPY"})
    @DisplayName("Tests if shortcut of currency is correct")
    void shouldReturnTrueIfCurrencyShortcutIsCorrect(String currencyShortcut, String correctCurrencyShortcut) {
        //TODO
    }
}

我现在想知道是否可以以某种方式从一个类中获取这些名称(只有名称,而不是来自 JSON 的值),而不是一个一个地测试它们。希望有人明白我想说什么。此外,如果有人不介意给我提示如何改进我的第一次测试,那就太棒了。它将 BigDecimal 值从每种货币返回到另一种货币。

标签: javatesting

解决方案


推荐阅读