我有一个JUnit测试类的JUnit套件.如果在该测试方法上存在某个注释,我想在套件上定义一个规则,以便在运行每个单元测试之前和之后对数据库执行某些操作.
我已经能够在套件和测试类中创建一个@ClassRule,它将在每个类之前执行此操作(这不够好)并且我已经能够使用测试类本身定义测试规则,但是这样是重复的,似乎不是很干.
是否可以在套件中定义每个测试方法规则,还是必须将它们添加到每个测试中?
编辑:为了澄清,我想在套件中声明代码,它将在测试类中的测试方法之间运行(即"围绕").
我有关于设置Junit Test Suite的问题.首先,我使用的是JUnit libarary 4.7版.
我的问题是在测试套件中创建应用程序上下文,然后允许应用程序上下文访问它运行的所有测试套件.我需要应用程序上下文是因为某些单元测试正在使用它来填充所需的数据.所以我正在重复一些课程去做.
以下是我的snipplet:
@RunWith(Suite.class)
@SuiteClasses({RestServiceUnitTest.class})
public class IntegrationSuite {
public ApplicationContext appCtx;
@BeforeClass
public static void setUp() {
System.out.println("setting up in Suite");
appCtx = new FileSystemXmlApplicationContext("/integrationtest/rest_test_app_ctx.xml" );
}
@AfterClass
public static void tearDown() {
System.out.println("tearing down in Suite");
CleanUp cleaner = (CleanUp)appCtx.getBean("cleanup");
cleaner.clean();
}
}
Run Code Online (Sandbox Code Playgroud)
我需要可以访问RestServiceUnitTest类的appCtx.我可以知道这是怎么做到的吗?任何人都有任何想法.
我猜它非常类似于: 测试调用:如何设置所有测试套件的通用性
但是我不知道如何访问你在unittest中的testsuite类中创建的变量,因为答案没有提到它.
我是测试自动化领域的新手,请原谅我,如果这是一个愚蠢的问题,但谷歌这次失败了.或者至少我读过的任何内容都让我更加困惑.
我在Eclipse中使用JUnit 4和Selenium Webdriver.我有几个测试需要作为套件运行,也需要单独运行.目前,这些测试在自行运行时运行良好.在测试开始时,向测试者/用户呈现输入框,询问他们想要测试的服务器(这是一个字符串变量,它成为URL的一部分)以及他们希望测试的浏览器.在套件中运行测试时,用户在每次测试开始时都会被问到这一点,因为很明显这会被编码到他们的每个@Before方法中.
我如何接受这些值一次,并将它们传递给每个测试方法?
因此,如果server ="server1"和browser ="firefox",那么firefox是我想要selenium使用的浏览器,我希望它打开的URL是http://server1.blah.com/,用于以下所有测试方法.我一直在使用单独的@Before方法的原因是因为每个测试方法所需的URL略有不同.即每种方法测试不同的页面,例如server1.blah.com/something和server1.blah.com/somethingElse
测试运行正常,我只是不想继续输入值,因为测试方法的数量最终会很大.
如果在testNG中有更简单的方法,我也可以将我的测试转换为testNG.我认为@BeforeSuite注释可能有用,但现在我不确定.
任何建议和批评(建设性的)都非常感谢