【问题标题】:How distinguish from which test suite was junit test run in case the same tests are run more times?如果相同的测试运行更多次,如何区分 junit 测试运行的是哪个测试套件?
【发布时间】:2014-11-12 15:43:27
【问题描述】:

我有 JUnit 主测试套件。该套件包含许多套件 - 用于每个测试配置

  @RunWith(ProgressSuite.class)
    @SuiteClasses({

        SimpleTest.class, 
        AboutTest.class, 

        CDH4_JDBC_TestSuite.class, 
        CDH5_JDBC_TestSuite.class,
        CDH4_Metastore_TestSuite.class,
        CDH5_Metastore_TestSuite.class,
        CDH4_JDBC_Kerberos_TestSuite.class,
        CDH5_JDBC_Kerberos_TestSuite.class,
        CDH4_Metastore_Kerberos_TestSuite.class,
        CDH5_Metastore_Kerberos_TestSuite.class,


    })
    public class TestSuite {

    }

每个测试配置的套件包含相同的测试用例,但包含不同的 setUpClass() 和 tearDownClass() 方法

@RunWith(Suite.class)
@SuiteClasses({

PerspectiveSwitchTest.class,

NewFolderFromToolbarTest.class,
RenameFolderFromToolbarTest.class,
RenameFileFromToolbarTest.class,
OpenFilePropertiesFromToolbarTest.class,
OpenFolderPropertiesFromToolbarTest.class,
DeleteFileFromToolbarTest.class,
DeleteFolderFromToolbarTest.class,
CopyPasteFolderFromToolbarTest.class,
CopyPasteFileFromToolbarTest.class,
CutPasteFolderFromToolbarTest.class,
CutPasteFileFromToolbarTest.class,

})

public class CDH4_JDBC_Kerberos_TestSuite {

    private static SWTWorkbenchBot bot = new SWTWorkbenchBot();
    private static AddNewEcosystemNavigator addNewEcosystemNavigator;
    private static EcosystemConfigurationLoader ecosystemConfigurationLoader;
    private static EcosystemConfiguration ecosystemConfiguration;
    private static GenericNavigator genericNavigator;

    @BeforeClass
    public static void setUpClass() {

        bot = new SWTWorkbenchBot();
        addNewEcosystemNavigator = new AddNewEcosystemNavigator();
        ecosystemConfigurationLoader = new EcosystemConfigurationLoader();
        genericNavigator = new GenericNavigator();

        ecosystemConfiguration = ecosystemConfigurationLoader
                .getDefaultCDH4JDBCKerberosEcosystemConfiguration();
        addNewEcosystemNavigator.addNewEcosystemManually(bot,
                ecosystemConfiguration);

    }

    @AfterClass
    public static void tearDownClass() {

        genericNavigator.closeDialogWindow();
        addNewEcosystemNavigator.discardEcosystem(bot, ecosystemConfiguration);

    }

}

我正在使用 Jenkins 和 Tycho 来构建测试。当我运行测试套件并且某些测试失败时,我无法区分哪些配置测试失败。在 Jekins 中,我只能看到信息,例如 NewFolderFromToolbarTest 运行了 8 次(3 次失败,5 次通过)。当然,我可以从日志中获取所需的信息,但这很耗时。

有什么方法可以获取所需的信息吗?例如使用不同的测试结构,使用不同的詹金斯插件,如果可能的话动态重命名方法等等?请问有什么想法吗?非常感谢

【问题讨论】:

    标签: java junit jenkins automated-tests tycho


    【解决方案1】:

    您可以将测试类抽象化,并让每个配置成为一个子类

    public class CDH4NewFolderFromToolbarTest extends AbstractNewFolderFromToolbarTest{
      //...
    
    }
    

    然后在您的套件中调用特定的测试类

    RunWith(Suite.class)
    @SuiteClasses({
    
    CDH4PerspectiveSwitchTest.class,
    
    CDH4NewFolderFromToolbarTest.class,
    CDH4RenameFolderFromToolbarTest.class,
    CDH4RenameFileFromToolbarTest.class,
    //...etc
    })
    
    public class CDH4_JDBC_Kerberos_TestSuite {
    
       //same as before
    
    }
    

    我主张不要在每个子类中重新配置,因为 @BeforeClass@AfterClass 如果放在套件中只会被调用一次。

    【讨论】:

    • 感谢您的回复,但是这个解决方案并不能很好地满足我。可以有很多测试配置,我不知道将来会添加多少。我不想为每个可能的配置扩展每个单独的测试。我需要更通用的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 2015-01-31
    • 1970-01-01
    • 2016-07-20
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多