有没有人可以告诉我:如何在测试方法失败时进行屏幕截图(jUnit 5)。我有一个带有BeforeEach和AfterEach方法的基本测试类。任何其他带有@Test方法的类都扩展了基类。
BeforeEach
AfterEach
plicqrtu1#
好吧,可以写java代码来截图,比如here。但我非常想知道您试图用这种方式解决的真实的问题。我不确定您是否已经意识到这一点,但JUnit的主要目的是为您提供一个在各种环境中运行测试的框架。当然,你可以在IDE中运行JUnit,这很好,也许你会发现截图很有帮助。但是:“通常”单元测试也会在夜间构建时运行-在“截图”可能没有任何意义的环境中!除此之外:screenshorts是一种极其无效的收集信息的方法!当你失败时,你应该锁定文本日志文件,html/xml报告,无论什么。你希望失败的测试生成的信息可以很容易地消化。所以,这里的真实的答案是:从你现在正在做的事情中退一步,重新考虑你真正想要解决的问题的非截图解决方案!
xggvc2p62#
您不需要对JUnit测试失败/通过进行屏幕截图,而推荐的方法是使用以下工具/插件自动生成各种报告(测试通过/失败报告,代码覆盖率报告,代码复杂性报告等)。您可以使用Cobertura maven plugin或Sonarqube code quality tool来自动生成报告。您可以在here中查找Cobertura-maven-plugin,在here中查找Sonarqube以获取更多详细信息。
**您需要将这些工具与您的CI(持续集成)环境集成,并确保如果代码没有通过某些质量(在测试覆盖率,代码复杂性等方面),那么项目构建(war/ear)应该自动失败。
jtoj6r0c3#
我通过扩展做到了这一点,下面是我的测试类:
public class MyTests2 { public static WebDriver driver; public static WebDriver getDriver(){ return driver; } @RegisterExtension static RunnerExtentsion2 extentsion2 = new RunnerExtentsion2(MyTests2::getDriver); @BeforeEach private void setUp() { System.setProperty("webdriver.chrome.driver", "drivers/chromedriver.exe"); driver = new ChromeDriver(); driver.manage().window().maximize(); } @AfterEach private void tearDown() { driver.quit(); } @Test public void emptyBothNameAndPassAuthNegaTest() { driver.navigate().to("https://www.google.com/"); throw new NoSuchElementException("my exception"); } }
字符串以下是我的截图taker类:
public class RunnerExtentsion2 implements AfterTestExecutionCallback { private Supplier<WebDriver> driverSupplier; public RunnerExtentsion2(Supplier<WebDriver> driverSupplier){ this.driverSupplier = driverSupplier; } @Override public void afterTestExecution(ExtensionContext context) throws Exception { Boolean testResult = context.getExecutionException().isPresent(); if (context.getExecutionException().isPresent()) { System.out.println("screenshot"); driverSupplier.get().get(...); Thread.sleep(3000); } } }
型
3条答案
按热度按时间plicqrtu1#
好吧,可以写java代码来截图,比如here。
但我非常想知道您试图用这种方式解决的真实的问题。我不确定您是否已经意识到这一点,但JUnit的主要目的是为您提供一个在各种环境中运行测试的框架。
当然,你可以在IDE中运行JUnit,这很好,也许你会发现截图很有帮助。但是:“通常”单元测试也会在夜间构建时运行-在“截图”可能没有任何意义的环境中!
除此之外:screenshorts是一种极其无效的收集信息的方法!当你失败时,你应该锁定文本日志文件,html/xml报告,无论什么。你希望失败的测试生成的信息可以很容易地消化。
所以,这里的真实的答案是:从你现在正在做的事情中退一步,重新考虑你真正想要解决的问题的非截图解决方案!
xggvc2p62#
您不需要对JUnit测试失败/通过进行屏幕截图,而推荐的方法是使用以下工具/插件自动生成各种报告(测试通过/失败报告,代码覆盖率报告,代码复杂性报告等)。
您可以使用Cobertura maven plugin或Sonarqube code quality tool来自动生成报告。
您可以在here中查找Cobertura-maven-plugin,在here中查找Sonarqube以获取更多详细信息。
**您需要将这些工具与您的CI(持续集成)环境集成,并确保如果代码没有通过某些质量(在测试覆盖率,代码复杂性等方面),那么项目构建(war/ear)应该自动失败。
jtoj6r0c3#
我通过扩展做到了这一点,下面是我的测试类:
字符串
以下是我的截图taker类:
型