Java 使用JUnit时跳过测试类中的方法
我有以下情况。我有一节课Java 使用JUnit时跳过测试类中的方法,java,junit,Java,Junit,我有以下情况。我有一节课 A { public void setProps() { // setting propertis makeSomeWeirdConfigs(); //setting another properties } private void makeSomeWeirdConfigs() { // making configs } public Props getPro
A {
public void setProps() {
// setting propertis
makeSomeWeirdConfigs();
//setting another properties
}
private void makeSomeWeirdConfigs() {
// making configs
}
public Props getProps() {
//getting properties
}
}
现在,我想在JUnit测试用例的帮助下,通过使用方法setProps()
然后使用getProps()
获取属性来检查属性是否正确设置
问题是这个方法<代码> MaqMeMealDebug()/<代码>中的代码> SETPROSPS()/<代码>,在没有适当的环境下执行时会导致很多异常,所以不设置该方法下面的道具。
另外,这个方法试图做一些危险的事情,例如执行一些脚本等。所以我的问题是,在JUnit测试用例中,是否可以跳过这个方法makeSomeWeirdConfigs()
,这样只执行setProps()
和getProps()
原A级不应更改
感谢“不应该更改原始类”-然后您正在寻找一些模拟、字节码篡改、AOP
如果将makeSomeWeirdConfig
设置为受保护,则可以重写该方法并测试子类。测试一个额外的标志也是如此
如果你能把代码放在一个委托器里,那就更好了
class SomeWeirdConfig {
void makeSomeWeirdConfigs() { ... }
}
SomeWeirdConfig delegate = new SomeWeirdConfig();
public void initTest() { delegate = null; }
private void makeSomeWeirdConfigs() {
if (delegate != null) {
delegate.makeSomeWeirdConfigs();
}
}
然后测试可以禁用setter。您可以使用Powermock模拟私有方法。您可以提供示例在这里找到一个示例: