对于公共方法调用,EasyMock的capture()允许您截取并检查传递给该方法的参数。对于私有方法调用,PowerMock的expectPrivate允许模拟私有方法调用。
有没有办法将它们组合在一起,并将参数传递给私有方法调用?示例:
public class Program
{
public FancyReturnType PublicMethod()
{
ArbitraryType localInstance = new ArbitraryType();
localInstance.setFoo(somePrivateHelperMet
我想测试一个设计成类似下面的东西的项目:
public class A(){
public static void init() {
M.m();
//some code
}
}
public class M(){
public static void m() {
//some code
}
}
我需要单独在class A()中测试init()方法。因此,我必须为M.m()制作一个与原始签名相同的模拟或存根。但不修改两个类中的任何内容,因为这是不允许的。在这种情况下,两个方法都是静态的,我如何让init()调用存根并忽略原始方法?
当我们使用PowerMock (和Mockito)时,我们需要模拟类的所有静态方法吗?我的意思是,假设我们有:
class MockMe {
public static MockMe getInstance(){
//return new Instance via complex process;
}
public static List<X> anotherStaticMethod(){
// does xyz
}
}
我的问题是,如果我需要模拟getInstance方法,是否也有必要模拟"anotherS
我有:
when(Long.valueOf(anyString())).thenReturn(anyLong());
它在Long.valueOf(String)上得到一个Long.valueOf(String),因为"“正在传递。
我正在测试的代码是:
final Long id = Long.valueOf(foo.bar());
我怎么才能绕开呢?
我想知道是否有一种方法可以模拟正在自动布线的字段。
考虑以下情况。
我有一个类名A
public class A {
@Autowired
private B b;
public void aMethod() {
b.method();
}
}
另一个类B看起来像这样
public class B {
public void method() {
// some code
}
}
现在我想为这个方法编写junit。
我知道有一种方法可以这样模拟自动生成的字段。
public class TestA {
@In
我想为我拥有的一个类写一个单元测试。这个类有一个公共方法,并且在公共方法内部有对同一类中的私有方法的调用。我想模拟对这些私有方法的调用。这个类与下面的类似:
public class SomeClass {
public int somePublicMethod(int num) {
int num2 = somePrivateMethod1(num);
int num3 = somePrivateMethod2(num);
return num2 + num3;
}
private int somePrivateMe
下面是我要测试的遗留单例类:
public class Controller {
private handler = HandlerMgr.getHandler();
public static final instance = new Controller();
private Controller() {
}
public int process() {
List<Request> reqs = handler.getHandler();
....
}
}
我尝试了以下几点,但都没有结果:
@Test
publi
假设我有一个实用程序类,如下所示:
public final class NumberUtility{
public static int getNumberPlusOne(int num){
return doSomethingFancyInternally(num);
}
private static int doSomethingFancyInternally(int num){
//Fancy code here...
return num;
}
}
假设我不更改类的结构,如何使用Powermock模拟doSomethingFancyInternally()方法
我正在尝试为包含ScheduleExpression的方法创建一个Junit测试。我尝试使用PowerMockito来模拟它,但是我继续得到一条错误消息,它读取
java.lang.ClassFormatError: Absent Code attribute in method
that is not native or abstract in class file javax/ejb/ScheduleExpression
下面是我如何使用PowerMockito
ScheduleExpression expression = PowerMockito.mock(ScheduleExpr
我正在使用JUNIT与Powermockito和EclEmma一起测试我的代码。现在有个问题。我要考这门课:
public class Main
{
private static final Logger slf4jLogger = LoggerFactory.getLogger(Main.class);
private static final Marker marker = MarkerFactory.getMarker("Test");
/**
* @param args
*/
public static v
我有下面的代码
public class A extends B {
private boolean workDone = false;
@Override
public void publicMethod(boolean flag) {
if (!workDone) {
privateMethod();
workDone = true;
}
super.publicMethod(flag);
}
private void privateMethod() {
// some logic here
}
}
我刚开始嘲笑你。我有以下疑问。我在试着测试公共方法。
这是我正在测试的方法,我正在使用mockito进行模拟: /**
* Sync get all children under single zk node.
*
* @param zk
* zookeeper client
* @param node
* node path
* @return direct children
* @throws InterruptedException
* @throws IOException
*/
public
如何使用PowerMockito模拟嵌套静态方法?下面是一个非常简单的例子,说明我想如何使用它。
类:
public class SomeClass {
public static String someMethodA(){
//some very important codes here
return someMethodB();
}
private static String someMethodB(){
return someMethodC();
}
private static String som
我有一个带有私有方法的类,它调用一些外部类并执行它,我如何在不使用powermock的情况下防止这种情况?(该项目使用Junit5,目前还不支持powermock )。 我考虑将这些函数移到外部,但我觉得有时方法真的属于某个特定的类,因为它们是类的一部分,对我来说移出它们是没有意义的,下面只是一个例子来说明。 我已经知道大多数人会说不要测试私有方法,但a.我不完全同意,b.我不想在这里测试这个方法,只是为了防止它执行外部调用,甚至是假的api url。 public class GenericOauth2Client implements Oauth2Client {
private N
我很难让PowerMock和Mockito工作。
我正在使用这些版本。他们应该是。
powermock core v. 1.7.4
powermock mockito v. 1.7.4
powermock模块-junit4 4 v 1.7.4
mockito-all诉1.10.19
我也在使用TestNG,但我不认为这对这个测试的结果有任何影响。
我想模拟一个对象,在模拟对象上调用一个方法,并验证在模拟对象方法中曾经调用过一个私有方法。
我已经建立了一个例子,希望能解释我想要实现的目标。
public class MyClass {
public void e