![](/img/trans.png)
[英]How to save any object which is declared as a class variable and initialized inside a test in JUnit
[英]How to write junit for guice injected static variable which is declared inside Enum
我有這樣的枚舉
public enum NumbersJk {
ONE {
public void processCommand(Info Info) {
log.info("what is in process " + process)
process.add(Info);
}
},
TWO {
public void processCommand(Info Info) {
process.subtract(Info);
}
},
TEN {
public void processCommand(Info Info) {
process.divide(Info);
}
}
@Inject
private static ProcessNumber process;
public abstract void processCommand(Info Info) throws Exception;
}
它是使用 guice 注入的,例如requestStaticInjection(NumbersJk.class);
public class AddNumbers {
public string testMethod(bla,bla,commandToExecute){
Info info = convert(bla,bla)
NumbersJk.valueOf(commandToExecute).processCommand(Info);
}
}
現在我正在嘗試為此編寫 junit (powermockito)
Junit
@Mock
private ProcessNumber process = new ProcessNumber(new depsencey(), dependecny2());
@InjectMocks
AddNumber addNumber;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
@SneakyThrows
public void test() {
addNumber.testMethod(1,2,ONE)
}
這在內部調用
NumbersJk.valueOf(commandToExecute).processCommand(Info);
並得到異常java.lang.NullPointerException: null
這是ProcessNumber
即將作為null
log.info("what is in process " + process) printed as `what is in process null`
問題:
如何在 junit 中注入 class ProcessNumber
謝謝Jk
我想到了。 我們可以使用powermock來解決這個問題Whitebox.setInternalState(NumbersJk.class, process);
代碼:
@Mock
private ProcessNumber process = new ProcessNumber(new depsencey(), dependecny2());
@InjectMocks
AddNumber addNumber;
@Before
public void setUp() throws Exception {
Whitebox.setInternalState(NumbersJk.class, process);
MockitoAnnotations.initMocks(this);
}
@Test
@SneakyThrows
public void test() {
addNumber.testMethod(1,2,ONE)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.