Java 단위 테스트 라이브러리 - Artery/JUnit4 - 숫자의 등가 결정
package jp.avaj.lib.test;
import static org.junit.Assert.*;
import java.math.BigDecimal;
import org.junit.Test;
/**
Java単体テストライブラリ-Artery/JUnit4-数値の等値判定
Arteryでは異なるタイプの数値でも等値判定をすることができる
doubleでは(現在のところ)判定誤差は指定できない.
JUnit4ではInteger vs Longなどの比較では等しい値でもNGになるので注意する.
*/
public class Q02_00 {
//////// 以下はArteryのサンプル
public static void main(String[] args) {
ArTest.startTestCase("Q02_00");
// int vs int
{
int value0 = 5;
int value1 = 5;
ArTest.equals("int vs int","value0",value0,"value1",value1);
value1 = 10;
ArTest.equals("int vs int (NG)","value0",value0,"value1",value1);
}
// int vs long
{
int value0 = 5;
long value1 = 5L;
ArTest.equals("int vs long","value0",value0,"value1",value1);
value1 = 10L;
ArTest.equals("int vs long (NG)","value0",value0,"value1",value1);
}
// int vs double
{
int value0 = 5;
double value1 = 5D;
ArTest.equals("int vs double","value0",value0,"value1",value1);
value1 = 10D;
ArTest.equals("int vs double (NG)","value0",value0,"value1",value1);
}
// int vs BigDecimal
{
int value0 = 5;
BigDecimal value1 = new BigDecimal(5);
ArTest.equals("int vs BigDecimal","value0",value0,"value1",value1);
value1 = new BigDecimal(10);
ArTest.equals("int vs BigDecimal (NG)","value0",value0,"value1",value1);
}
// int vs String ⇒ 数値でなくてもできる..⇒ 使わない方が良いかも..
{
int value0 = 5;
String value1 = "5";
ArTest.equals("int vs String","value0",value0,"value1",value1);
value1 = "10";
ArTest.equals("int vs String (NG)","value0",value0,"value1",value1);
}
// Integer vs Long
{
Integer value0 = 5;
Long value1 = 5L;
ArTest.equals("Integer vs Long","value0",value0,"value1",value1);
value1 = 10L;
ArTest.equals("Integer vs Long (NG)","value0",value0,"value1",value1);
}
// Integer vs Double
{
Integer value0 = 5;
Double value1 = 5D;
ArTest.equals("Integer vs Double","value0",value0,"value1",value1);
value1 = 10D;
ArTest.equals("Integer vs Double (NG)","value0",value0,"value1",value1);
}
// Integer vs BigDecimal
{
Integer value0 = 5;
BigDecimal value1 = new BigDecimal(5);
ArTest.equals("Integer vs BigDecimal","value0",value0,"value1",value1);
value1 = new BigDecimal(10);
ArTest.equals("Integer vs BigDecimal (NG)","value0",value0,"value1",value1);
}
// Integer vs String ⇒ 数値でなくてもできる..⇒ 使わない方が良いかも..
{
Integer value0 = 5;
String value1 = "5";
ArTest.equals("Integer vs String","value0",value0,"value1",value1);
value1 = "10";
ArTest.equals("Integer vs String (NG)","value0",value0,"value1",value1);
}
//
ArTest.endTestCase();
}
//////// 以下はJUnit4のサンプル
// int同士の等値判定-等しい場合
@Test
public void test00() {
assertEquals(5,5);
}
// int同士の等値判定-等しくない場合
@Test
public void test01() {
assertEquals(5,10);
}
// int vs longの等値判定-等しい場合
@Test
public void test02() {
assertEquals(5,5L);
}
// int vs longの等値判定-等しくない場合
@Test
public void test03() {
assertEquals(5,10L);
}
// int vs doubleの等値判定
@Test
public void test04() {
// doubleの場合は判定誤差を指定する
assertEquals(5,5D,0.01D);
}
// int vs BigDecimalの等値判定 ⇒ 同じ値でもNGとなる
// これはOKにしてほしい... ⇒ でなければコンパイルエラーにしてほしい
@Test
public void test05() {
assertEquals(5,new BigDecimal(5));
}
// Integer vs Longの等値判定 ⇒ 同じ値でもNGとなる
// これはOKにしてほしい... ⇒ でなければコンパイルエラーにしてほしい
@Test
public void test06() {
assertEquals(new Integer(5),new Long(5L));
}
// 蛇足 int vs String ⇒ (当然ながら)NGになる
@Test
public void test07() {
assertEquals(5,"5");
}
}
결과는 다음과 같습니다.
result.txt
**** Q02_00 start ****
OK int vs int:value0=5:value1=5
NG int vs int (NG):value0=5:value1=10
jp.avaj.lib.test.Q02_00.main(Q02_00.java:27)
OK int vs long:value0=5:value1=5
NG int vs long (NG):value0=5:value1=10
jp.avaj.lib.test.Q02_00.main(Q02_00.java:35)
OK int vs double:value0=5:value1=5
NG int vs double (NG):value0=5:value1=10
jp.avaj.lib.test.Q02_00.main(Q02_00.java:43)
OK int vs BigDecimal:value0=5:value1=5
NG int vs BigDecimal (NG):value0=5:value1=10
jp.avaj.lib.test.Q02_00.main(Q02_00.java:51)
OK int vs String:value0=5:value1=5
NG int vs String (NG):value0=5:value1=10
jp.avaj.lib.test.Q02_00.main(Q02_00.java:59)
OK Integer vs Long:value0=5:value1=5
NG Integer vs Long (NG):value0=5:value1=10
jp.avaj.lib.test.Q02_00.main(Q02_00.java:67)
OK Integer vs Double:value0=5:value1=5
NG Integer vs Double (NG):value0=5:value1=10
jp.avaj.lib.test.Q02_00.main(Q02_00.java:75)
OK Integer vs BigDecimal:value0=5:value1=5
NG Integer vs BigDecimal (NG):value0=5:value1=10
jp.avaj.lib.test.Q02_00.main(Q02_00.java:83)
OK Integer vs String:value0=5:value1=5
NG Integer vs String (NG):value0=5:value1=10
jp.avaj.lib.test.Q02_00.main(Q02_00.java:91)
**** Q02_00 summary ****
test count = 18
success = 9
Reference
이 문제에 관하여(Java 단위 테스트 라이브러리 - Artery/JUnit4 - 숫자의 등가 결정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/artery/items/1cb7fb1b10f30a5e5db9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)