yuusuke-roughの日記

Java,SpringBoot,趣味等

プロになるJavaの学習日記 1回目

はじめに

IntelliJ IDEAはUbuntuを入れているPCにインストールしていました。

Swingがクラスファイルからは実行できるけれど、JShellから入力だと実行できない現象についてリベンジしたり、復習に時間を費やしました。前者は徒労に終わり、後者はオートマトンやツリー探索をメインに進めたので楽しかったです。

 

今回は、JUnitについて触れていきます。(1/23)

22日、23日共に、別の資格の試験と賃貸探しに時間がかかりました。

25日でひとまず、プログラミング以外の資格については終わりです。

 

内容

 

3章

足し算、掛け算、割り算、文字列を指定した回数繰り返して表示する処理のテストを考えました。コメントアウトしている部分は、異常になりそうな値や境界になりそうな値を入れてみました。

 

循環小数についてはDoubleのisFiniteやisInfiniteで対応不可

org.opentest4j.AssertionFailedError: Expected java.lang.ArithmeticException to be thrown, but nothing was thrown.

 

値は...1.6666666666666667

 

一方で、BigDecimalで試すも下記例外発生のため、そのまま使用する事に(正しいのかな)

jshell> BigDecimal.valueOf(5).divide(BigDecimal.valueOf(3));
|  例外java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
|        at BigDecimal.divide (BigDecimal.java:1780)
|        at (#1:1)

 

JVMで出す例外については、触れる必要はないとアドバイスを頂き修正(1/23)

プロJavaの8章「異常値のテスト」や「不安な箇所」の項目にも記載有。

 

プロJavaP49までのコードとテストコード(1/23:修正済)

 

コード

 

public class CH2_practice {

    
    public int add(int a, int b) {
        return a + b;
    }
    
    
    public int minus(int a, int b) {
        return a - b;
    }
    
    public int multiply(int a, int b) {
        return a * b;
    }
    

    public double division(double a, double b) {
        return a / b;
    }
    
    public String repeatString(String str, int counts) {
        return str.repeat(counts);
    }
    
}

------------------------------------------------------------------------------------------------

 

class TEST_CH2_practice {

    @Test
    @DisplayName("足し算のテスト")
    void addTest() {
        assertEquals(9 , new CH2_practice().add(7, 2), "7 + 2 = 9");
    }
    
    @Test
    @DisplayName("引き算のテスト")
    void minus() {
        assertEquals(5 , new CH2_practice().minus(7, 2), "7 - 2 = 5");
    }
    
    @Test
    @DisplayName("掛け算のテスト")
    void multiplyTest() {
        assertEquals(14 , new CH2_practice().multiply(7, 2), "7 * 2 = 14");
        assertEquals(0 , new CH2_practice().multiply(1, 0), "1 * 0 = 0");
    }

    @Test
    @DisplayName("割り算のテスト")
    void divisionTest() {
        assertEquals(5 , new CH2_practice().division(10, 2), "10 / 2 = 5");
        assertEquals(0 , new CH2_practice().division(0, 2), "0 / 2 = 0");
    }
    
    @Test
    void repeatTest() {
        assertEquals("HelloHello", new CH2_practice().repeatString("Hello", 2 ));
        assertEquals("", new CH2_practice().repeatString("Hello", 0 ));
    }
    
    
}

    

感想(1/23)

学習中に思いますが、ここからは、いかに成果に結びつくように方向性を誤らず、継続的にできるかが問題になりそうです。

ブログになるべく挙げるようにしたいと思います。

 

 

関係ない話(こちらは項目は今回で最後)

ブログ公開にあたって、関係ない話は関係ないので、書かないようにしようと思いました。