Java 如果存在构造函数,如何使JUnit测试失败?
我正在学习JUnit和测试驱动开发实践。我有空钱界面:Java 如果存在构造函数,如何使JUnit测试失败?,java,junit,tdd,Java,Junit,Tdd,我正在学习JUnit和测试驱动开发实践。我有空钱界面: public interface Money { } public class CommonMoney implements Money { private CommonMoney() { } public static Money create(String decimalPart, Currency currency) { return new Money() { };
public interface Money {
}
public class CommonMoney implements Money {
private CommonMoney() {
}
public static Money create(String decimalPart, Currency currency) {
return new Money() {
};
}
}
实现货币接口的CommonMoney类:
public interface Money {
}
public class CommonMoney implements Money {
private CommonMoney() {
}
public static Money create(String decimalPart, Currency currency) {
return new Money() {
};
}
}
还有测试普通货币的MoneyTest类
public class MoneyTest {
// some test cases before
@Test
public void shouldNotCreateCommonMoneyObjectWithEmptyConstructor() {
@SuppressWarnings("unused")
Money money = new CommonMoney();
fail();
}
}
目前,测试用例不应该创建CommonMoneyObjectWithEmptyConstructor为红色,但如果CommonMoney的构造函数是私有的,它应该为绿色,如果它是公共的,它应该为红色。可以这样制作测试用例吗?我该怎么做呢
可以这样制作测试用例吗
是的,例如,可以通过使用java反射来实现此测试。否则,您无法从该类之外测试私有构造函数是否存在——代码将无法编译
然而,测试这一点并没有什么意义。访问修饰符的存在实际上是为了方便开发人员并限制访问范围。可以说,范围限制也是为了方便
您的测试应该覆盖公共API,而不是私有实现
可以这样制作测试用例吗
是的,例如,可以通过使用java反射来实现此测试。否则,您无法从该类之外测试私有构造函数是否存在——代码将无法编译
然而,测试这一点并没有什么意义。访问修饰符的存在实际上是为了方便开发人员并限制访问范围。可以说,范围限制也是为了方便
您的测试应该覆盖公共API,而不是私有实现
可以这样制作测试用例吗
是的,例如,可以通过使用java反射来实现此测试。否则,您无法从该类之外测试私有构造函数是否存在——代码将无法编译
然而,测试这一点并没有什么意义。访问修饰符的存在实际上是为了方便开发人员并限制访问范围。可以说,范围限制也是为了方便
您的测试应该覆盖公共API,而不是私有实现
可以这样制作测试用例吗
是的,例如,可以通过使用java反射来实现此测试。否则,您无法从该类之外测试私有构造函数是否存在——代码将无法编译
然而,测试这一点并没有什么意义。访问修饰符的存在实际上是为了方便开发人员并限制访问范围。可以说,范围限制也是为了方便
您的测试应该涵盖公共API,而不是私有实现。这不是您需要测试的类型 正如Agad所指出的,代码无论如何都不会以这种方式编译,因为通过将构造函数设置为私有,您就不可能使用空构造函数创建对象
编译器正在有效地为您执行检查,因此您不需要编写特定的测试来检查它。这不是您需要测试的类型 正如Agad所指出的,代码无论如何都不会以这种方式编译,因为通过将构造函数设置为私有,您就不可能使用空构造函数创建对象
编译器正在有效地为您执行检查,因此您不需要编写特定的测试来检查它。这不是您需要测试的类型 正如Agad所指出的,代码无论如何都不会以这种方式编译,因为通过将构造函数设置为私有,您就不可能使用空构造函数创建对象
编译器正在有效地为您执行检查,因此您不需要编写特定的测试来检查它。这不是您需要测试的类型 正如Agad所指出的,代码无论如何都不会以这种方式编译,因为通过将构造函数设置为私有,您就不可能使用空构造函数创建对象
编译器正在有效地为您执行检查,因此您不需要编写特定的测试来检查它。如果构造函数是私有的,您的测试类不会编译。您可以使用反射,但为什么?你不信任和你一起工作的人吗?还要注意,随着系统的增长,实现测试很脆弱,很难维护。如果您只是想确保从未调用私有构造函数(无论出于什么原因),请在构造函数体中抛出已检查的异常。尽管如此,正如agad已经指出的那样,由于构造函数在类之外不可见,您的测试甚至不会编译。如果构造函数是私有的,您的测试类不会编译。您可以使用反射,但为什么?你不信任和你一起工作的人吗?还要注意,随着系统的增长,实现测试很脆弱,很难维护。如果您只是想确保从未调用私有构造函数(无论出于什么原因),请在构造函数体中抛出已检查的异常。尽管如此,正如agad已经指出的那样,由于构造函数在类之外不可见,您的测试甚至不会编译。如果构造函数是私有的,您的测试类不会编译。您可以使用反射,但为什么?你不信任和你一起工作的人吗?还要注意,随着系统的增长,实现测试很脆弱,很难维护。如果您只是想确保从未调用私有构造函数(无论出于什么原因),请在构造函数体中抛出已检查的异常。尽管如此,正如agad已经指出的那样,由于构造函数在类之外不可见,您的测试甚至不会编译。如果构造函数是私有的,您的测试类不会编译。您可以使用反射,但为什么?你不信任和你一起工作的人吗?还要注意,实现测试是脆弱的,很难维护,因为