我有使用名为Server的类实例的TestNG测试。这个实例是在我的测试中使用SpringTest框架自动连接的。正如这里所建议的,我希望通过实现TestExecutionListener接口,在beforeTestClass()和afterTestClass)方法中外部化服务器的启动和停止。为此,我首先使用Java反射获取测试类中的Server字段,然后分别在beforeTestClass()和afterTestClass)方法中调用start和stop。作为参数传递给这些方法的TestContext封装了测试的实例。然而,TestContext。getInstance为空,这意味着我无法在运行时获取字段(服务器对象)的值。
这里有一个例子:
public class Server
{
public void start()
{
System.out.println("Started");
}
public void stop()
{
System.out.println("Stopped.");
}
}
@Configuration
public class ServerConfig
{
@Bean
public Server server()
{
return new Server();
}
}
public class ServerStartStopListener implements TestExecutionListener, Ordered
{
@Override
public void afterTestClass(TestContext testContext)
{
//testContext.getTestInstance() is null
}
@Override
public void afterTestMethod(TestContext testContext){}
@Override
public void beforeTestClass(TestContext testContext)
{
//testContext.getTestInstance() is null
}
@Override
public void beforeTestMethod(TestContext testContext){}
@Override
public void prepareTestInstance(TestContext testContext){}
@Override
public int getOrder()
{
return 6000;
}
}
@ContextConfiguration(classes={ServerConfig.class})
@TestExecutionListeners(listeners=ServerStartStopListener.class, mergeMode = MergeMode.MERGE_WITH_DEFAULTS)
public class AppTest extends AbstractTestNGSpringContextTests
{
@Autowired
private Server server;
@Test
public void test()
{
System.out.println("Server should be started at this point");
}
}
有解决方法。这建议从测试实例的ApplicationContext中自动连接bean。另一种方法是使用beforeTestMethod()和afterTestMetho()方法。然而,它们不适合我的需要。
按照org.springframework.test.context中的beforeTestClass()和afterTestClass)方法。TestContextManager,上述行为似乎是有意的。有人能解释为什么吗?
此问题与10184602有关。有关详细信息,请参阅那里的讨论。
但是回答你的问题...
按照org.springframework.test.context中的beforeTestClass()和afterTestClass)方法。TestContextManager,上述行为似乎是有意的。有人能解释为什么吗?
根据Javadoc,TestContext
封装了执行测试的上下文,与实际使用的测试框架无关。语义学在这里很重要:TestContext
本身并不封装测试实例。例如,在TestEx的
和后Testclass()
方法中,您无权访问测试实例,因为这些方法在设计上仅限于与测试类交互。这些义学是必需的,以便Spring TestContext Framework可以与TestNG和JUnit一起使用。
我没试过这个,但是理论上...作为一种变通办法,您可以考虑以下几点:
当然,对于TestNG套件中“测试方法”执行的顺序,您可能需要小心。我说“测试方法”是因为许多开发人员对TestNG的运行时语义感到困惑,这些语义涉及对实际测试方法的依赖性、方法之前的依赖性等。如果有疑问,请打开DEBUG
org.springframework.test的日志记录。上下文,并验证TestExecutionListener
中的方法是否在您期望的情况下(即,相对于“测试方法”的顺序)被执行(即,不是无序)。
祝好
Sam(Spring test context框架的作者)
p. s.您的自定义TestEx
方法正在传递,这太好了,但是为什么的结果会出现在库测试结果中,我不明白。我怎么才能避免呢? 我在这里列出了和的完整代码。
我有两个屏幕..首先是闪屏,在这里我借助firebase.auth()检查用户是否已经存在。onAuthStateChanged侦听器。如果用户为空,它将转到另一个firebase.auth()的登录屏幕。onAuthStateChanged侦听器用于在电话验证后获取用户,如果用户之前未注册,则将用户移至UserDetails屏幕以获取更多用户信息,或者移至主屏幕..同样的检查也在闪屏上进行,以确
本文向大家介绍什么是测试用例?相关面试题,主要包含被问及什么是测试用例?时的应答技巧和注意事项,需要的朋友参考一下 测试用例是执行测试的依据,把测试系统的操作1197步骤用文档的形式描述出来 (1)测试用例是为达到最佳的测试效果或高效的揭露隐藏的错误,而精心设计的少量测试数据,包括测试输入、执行条件和预期的结果,实际结果 (2)测试用例是执行的最小实体。 (3)测试用例是测试工作的指导,是软件测试
我正在尝试学习python来处理一个测试项目。是否有一种方法可以在python测试框架中实现类似功能的TestNG侦听器。 侦听器有诸如OnTestFailure()、OnTestSuccess、OnStart()等方法,当您想要做某些事情时,这些方法非常有用。 比方说,一个测试用例失败了,您想执行一些操作,比如截图。然后你可以只在一个地方写,而不是在每个测试方法中都写。
有人对这种情况有什么建议吗?额外信息:我用的是liquidbase,panache entity,Junity。
22.13.1.执行测试 测试从main构建过程中分离出来的,运行在一个单独的JVM中执行.Test任务允许控制这些如何发生. 有许多属性用于控制测试过程如何启动.这包括使用诸如系统属性,JVM参数和Java可执行文件。 可以指定是否要并行执行测试.Gradle通过同时运行多个测试进程提供并行执行测试.每个测试进程在同一时间只能执行一个测试,为了充分利用这一特性,一般不需要为tests任务做什么特