- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的JUnit 测试 很少,我想决定在运行时使用哪一个。我在 SO 上检查了以前的答案,最后动态创建了测试套件。
这个类是我的应用程序开始的地方。我有 CustomTestSuite 类和 Main 类将测试添加到我的自定义套件。
public class Main {
public static junit.framework.TestSuite suite()
{
CustomTestSuite suite = new CustomTestSuite();
suite.addTest(new JUnit4TestAdapter(BTest.class));
suite.addTest(new JUnit4TestAdapter(ATest.class));
return suite;
}
}
CustomTestSuite.java
public class CustomTestSuite extends TestSuite {
@BeforeClass
public static void setUp() throws Exception {
System.out.println("Before class test");
}
@After
public void tearDown() throws Exception {
System.out.println("After class test");
}
}
我的ATest 和BTest 是简单的测试类,我将只显示ATest 作为示例:
public class ATest{
@Test
public void testMethod() {
System.out.println("testMethod");
}
}
当我从Main 类开始运行我的项目时,预计会先运行带有@BeforeClass
的方法,进行测试,然后运行带有 的方法>@AfterClass
注释。
测试工作正常,但它跳过了 setUp
方法和 tearDown
方法。我尝试了 @Before
和 @BeforeClass
注释。
我对套件结构感到困惑。任何帮助,将不胜感激。谢谢
最佳答案
@Before
和 @BeforeClass
应该在 Test
类中使用,而不是在 TestSuite
中使用。如果需要对多个测试类使用通用的setUp
和tearDown
,则将这两种方法放在父类(super class)中,并通过ATest
扩展该父类(super class)> 和 BTest
测试类。而且套件可以通过 @RunWith
和 @SuiteClasses
注释构建和运行,不需要 CustomTestSuite
类。
所以变化如下。
CustomTestSuite
变成了 TestSuper
public class TestSuper {
@BeforeClass
public static void setUp() throws Exception {
System.out.println("Before class test");
}
@After
public void tearDown() throws Exception {
System.out.println("After class test");
}
}
现在 ATest
扩展了 TestSuper
public class ATest extends TestSuper {
@Test
public void testMethod() {
System.out.println("testMethod");
}
}
同样,BTest
也应该扩展TestSuper
。只需将 @RunWith
和 @SuiteClasses
注释添加到 Main
类,如下所示,然后运行 Main
。
@RunWith(Suite.class)
@SuiteClasses({ATest.class, BTest.class})
public class Main {
}
尝试进行这些更改。
关于java - @BeforeClass 注释在动态创建的测试套件中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24540951/
我有一个 Maven 项目,其中我正在从 pom.xml 文件运行 testng.xml。 我的 testng.xml 文件如下所示:
我需要使用 TestNG 类向 @BeforeClass 方法添加参数。我正在使用以下代码动态运行 TestSuite: List suites = getXmlTestSuiteForUI(xmlN
我的JUnit 测试 很少,我想决定在运行时使用哪一个。我在 SO 上检查了以前的答案,最后动态创建了测试套件。 这个类是我的应用程序开始的地方。我有 CustomTestSuite 类和 Main
我有两个类,每个类包含 2 个测试用例和 Test1 类,其中一个方法带有 @BeforeClass,按照我的说法,这个方法也应该在 Test2 类之前运行,但它没有运行。 package W
我正在使用 JUnit 编写一些测试用例。我需要初始化一些静态变量,这些变量将用于该类中的所有测试用例。 为此我可以使用任何一个 静态初始化 block 或 @BeforeClass 的静态方法 使用
如何告诉 @Sql 注释只为该类运行一次,而不是为每个 @Test 方法运行一次? 喜欢与 @BeforeClass 具有相同的行为吗? @org.springframework.test.conte
我从 JUnit 开始,不理解注释 @Test 和 @BeforeClass。 我有以下代码: public class Toto { @BeforeClass public static v
我正在尝试使用 @BeforeClass 方法运行 Scala Junit 测试。当我运行这个测试类时,setup() 方法永远不会被执行。我在这里做错了什么?我正在使用 JUnit 4.12 和 S
我将 TestNG 与 Selenium WebDriver 一起使用,我使用的框架有一个基类,该基类具有 BeforeClass 方法,所有 Suite 类都从该基类扩展,并覆盖了 BeforeCl
我正在使用 IntelliJ IDEA CE 2018.3 和 JUnit 4.12。 我有一个看起来像这样的测试类: @RunWith(HierarchicalContextRunner.class
我正在使用 Selenium、TestNG 编写测试代码。我正在尝试在 @BeforeClass 部分设置一些元素,因为我在同一页面上重复这些操作。但是我收到空指针异常。有办法解决这个问题吗? pub
为什么不使用这些 JUnit 4 注释,我们为什么不使用静态和实例初始化程序 block 呢?以下代码显示只要静态初始化程序 block 运行,@BeforeClass 方法就会运行,而当实例初始化程
我希望使用 @BeforeClass 注释运行一个方法两次(或更多次)。有没有办法用 TestNG 做到这一点? 喜欢:@Test(invocationCount = 2)? 最佳答案 不,TestN
我很明白什么是@BeforeClass。它在 JUnit 测试运行开始之前执行一次并且 @Before 方法在每个测试用例之前执行。我的问题是关于一位非常资深的 stackoverflow 用户(Pé
我正在使用 @BeforeClass 注释来确保一组事件在一组 5-6 个测试中只完成一次。有 3 个 java 文件的层次结构。 File1 扩展了 TestCase File2 extends F
我的设置: 一个包含@BeforeClass 方法的TestBase 类 几个测试类 从 TestBase 类扩展并包含一个 @BeforeClass 方法 testNG 6.8.8 为什么要这样设置
TestNG 的@BeforeClass 和测试类的构造函数有什么区别?它在内部是如何运作的? 最佳答案 @BeforeClass 方法在测试类实例化后调用。 构造函数中的异常只会中止 TestNG
我正在学习junit,一开始就出现了问题。 一开始我想初始化将在测试中使用的对象。但是@BeforeClass 不会那样做。 public class InitTests { private Crou
根据 this父类(super class)的文档 @BeforeClass 方法将在当前类之前运行。但这不会发生在我的情况下。 我正在使用 junit 4.8.1。 你能告诉我我做错了什么吗? 我的
我有以下代码: @BeforeClass public static void setUpOnce() throws InterruptedException { fa
我是一名优秀的程序员,十分优秀!