gpt4 book ai didi

java - PowerMock Mockito 忽略 junit FixMethodOrder

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:13 26 4
gpt4 key购买 nike

我这里有个小问题,不知道怎么解决。

我有一个类必须对一些 JSF bean 进行测试。为了实现这一点,我使用 PowerMock 和 Mockito 来模拟 FacesContext、RequestContext 和其他在 JSF bean 中使用的静态方法。

@PrepareForTest(ClassWithStaticMethods.class)
@RunWith(PowerMockRunner.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class MyTestingClass extends SomeTestBaseClass{

@BeforeClass
public static void init() throws Exception{
//mocking the FacesContext and others
}

@Test
public void test0001Create(){}

@Test
public void test0002Edit(){}

@Test
public void test0003Delete(){}
}

SomeTestBaseClass,没什么复杂的。

public abstract class SomeTestBaseClass {

@BeforeClass
public static void setUpBeforeClass() throws Exception {
//...
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
//...
}
}

问题是测试的顺序被忽略了(即使有 FixMethodOrder 注释)。如果我删除 PowerMockRunner(和 RunWith 注释),顺序将保留,但静态(和 void)方法的模拟不起作用。但是将类留在 PowerMockRunner 中,注解 @FixMethodOrder 将被完全忽略。

我什至尝试使用 MockitoJUnitRunner,这里测试的顺序保持不变,但静态(和 void)方法的模拟没有完成。

有人知道为什么会这样吗?

谢谢

最佳答案

让它们以正确的顺序运行时我遇到了同样的问题。我使用 @PowerMockRunnerDelegate 注释解决了这个问题。

在我的测试类注释中:

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(PowerMockRunner.class)

我添加了@PowerMockRunnerDelegate(JUnit4.class):

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(JUnit4.class)

它们现在以预期的顺序运行。我相信这是可行的,因为运行测试的不是 PowerMock,而是 JUnit 4 本身。

关于java - PowerMock Mockito 忽略 junit FixMethodOrder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28561439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com