我在Java /Android测试Cordova插件,我需要初始化我的插件类,并在运行测试之前设置一些状态。
@Before
public void beforeEach() throws Exception {
System.out.println("Creating new Instance ");
PowerMockito.mockStatic(Helpers.class);
PowerMockito.when(Helpers.canUseStorage(any(), any())).thenReturn(true);
MyLogger myLoggerMock = PowerMockito.mock(MyLogger.class);
PowerMockito.doNothing().when(myLoggerMock, "log", anyString());
PowerMockito.whenNew(MyLogger.class).withAnyArguments().thenReturn(myLoggerMock);
this.sut = spy(new FilePicker());
PowerMockito.doNothing().when(this.sut).pick(any(), any());
}
我想为每个公共函数创建一个测试套件/Java类,但我不想每次都重复该代码。
有没有办法在测试套件之间共享每个之前?我找到了Class规则,但我认为我没有做我需要的(或者我理解错了...我真的是Java新手)
在Typescript中,我们可以与多个套件共享beforeach函数,每个套件都可以有自己的beforeach
一种可能的方法是使用继承:
使所有测试类从一个“父测试”类扩展,并在父类中的前定义一个测试类。因此,它将自动为所有子类调用:
public class ParentTest {
@Before
public void doInitialization() {
....
}
}
public class Test1Class extends ParentClass {
@Test
public void fooTest() {
// doInitialization will be executed before this method
}
@Test
public void barTest() {
// doInitialization will be executed before this method as well
}
}
两个注意事项:
附注1
在您使用sut
(测试中的主题)的代码中——这显然不应该在父级的doLaunize
方法中,因此Test1Class
可能也会有用@前
注释的方法(阅读此处了解有关排序等的信息)然后'sut被Spy初始化,坦率地说,这很奇怪恕我直言,测试中的主题应该是您编写的真实类,但这超出了问题的范围,只是提到它,因为它可以指出错误。
附注2
我写这篇文章是为了帮助你,因为你说过你是Java新手,这与你的问题没有严格的关系。。。
虽然这种方法在一般情况下有效,但您应该对PowerMockito非常谨慎。我不是PowerMockito专家,我试图在代码中避免这种类型的模拟,但简而言之,它处理字节码的方式可能会与其他工具发生冲突。从您的代码中:您可以将HelperUtils重构为非静态的,从而避免PowerMocking,而支持更快、更安全的常规mocking。至于日志记录,通常您可以在单元测试中对其进行折衷,如果您使用slf4j库,您可以将其配置为使用“no op”日志进行测试,例如将所有日志记录消息发送到“nothing”中,并且在控制台中看不到它们。
因为这个方法是在运行时执行的,所以需要对它进行测试吗
我有一个测试类的testng套件,我正在通过一个testng.xml文件运行它。这个很管用。所有测试都是串行运行的,因此没有并行执行障碍。 当然,通过类成员变量在单个类中的测试方法之间共享状态是很容易的,但是我不知道如何在测试类之间共享状态。
我有两个类 TempResult 和 结果,它们之间需要多对一。临时收割有一个复合键。结果还需要 TempResult 的复合键中的所有属性(一个属性除外)作为其主键。 在TempResult中包含@ManyTone的情况下,如果在@JoinColumn中设置了insertable=false和Updateable=false,则表结构完全正常。但它不允许在TempResult表中创建新条目。如果
执行testng xml时,它在套件中只执行1个测试 基本测试- 登录测试-
类似问题:在Android Studio中的Android工具测试和单元测试之间共享代码 我的设置如下: 包含单元测试的< li> 文件夹。这些可以是Java或Kotlin类 包含仪器测试的< li> 。这些也可以是Java或Kotlin类 < li> 是一个文件夹,其中包含一组在单元测试和测量测试之间共享的实用程序。 这种共享在gradle中定义为: 这允许< code>src/test或< c
问题内容: 我需要创建一个伪的帮助程序类以用于单元测试(注入到测试的类中)。有没有办法在此类中使用TestCase断言? 我想将这些断言用于Fake类执行的一些常见检查。就像是: 问题答案: 您可以创建的实例并在其上调用方法。 在较旧的Python版本(Python 2.7和更早的版本3.0、3.1)上,您需要在类类中传递 现有 方法的名称(通常在子类上传递测试方法的名称)。在这种情况下将: 但是