### Question:
Args { public static <T> T proper(T returnIfNotNull, T alternative) { if (returnIfNotNull == null) { return alternative; } else { return returnIfNotNull; } } private  Args(); static String caller(); static boolean calledBy(Class<?> caller); static boolean calledBy(Class<?> caller, int depth); static T proper(T returnIfNotNull, T alternative); static void checkTrue(boolean suspect); static void checkTrue(boolean suspect, Object message); static void checkNotNull(Object suspect); static void checkNotNull(Object suspect, Object message); static void checkNotEmpty(Object[] suspect); static void checkNotEmpty(Object[] suspect, Object message); static void checkNotEmpty(CharSequence suspect); static void checkNotEmpty(CharSequence suspect, Object message); static void checkNotEmpty(Collection<?> suspect); static void checkNotEmpty(Collection<?> suspect, Object message); static void checkNotEmpty(Map<?, ?> suspect); static void checkNotEmpty(Map<?, ?> suspect, Object message); static void checkNotBlank(CharSequence suspect); static void checkNotBlank(CharSequence suspect, Object message); static void checkPositive(int suspect); static void checkPositive(int suspect, Object message); static void checkPositiveOrZero(int suspect); static void checkPositiveOrZero(int suspect, Object message); static void checkAssignable(Object suspect, Class<?> assignable); static void checkAssignable(Object suspect, Class<?> assignable, Object message);  }### Answer:
@Test public void 第1引数がnullでないproperテスト() { Object first = new Object() { @Override public String toString() {return "first";} }; Object second = new Object() { @Override public String toString() {return "second";} }; String actual = Args.proper(first, second).toString(); assertEquals("first", actual); }
@Test public void 第1引数がnullのproperテスト() { Object first = null; Object second = new Object() { @Override public String toString() {return "second";} }; String actual = Args.proper(first, second).toString(); assertEquals("second", actual); }