当前位置: 首页 > 知识库问答 >
问题:

在JUnit中使用TestSuite时@规则注释不起作用

闻人宏盛
2023-03-14

我有3个测试类如下:

包裹通讯。朱尼特。测试用例;

Test3类:

import junit.framework.TestCase;

import org.junit.Ignore;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TestRule;
import annotations.DataSetRule;
import annotations.DataSets;
import com.junittest.test.MyClass;

public class Test3 extends TestCase{
    MyClass m = new MyClass();
    String group = "user";

    @Rule
    public TestRule dataSetRule = new DataSetRule();

    @Test
    public void test5() {
        System.out.println("In Test 5");
        //assertEquals(5, m.add(2,3));
    }

    @Test
    public void test6() throws Exception {
        org.junit.Assume.assumeTrue(group.equals("user"));
        System.out.println("In Test 6");
        //assertEquals(-2, m.sub(2,3));
    }

    @DataSets({"dataset","dataset1"})
    @Test
    public void test7() {
        System.out.println("In Test 7");
    }

    @Ignore
    @Test
    public void test8() {
        System.out.println("in test8");
    }
}

Test2类:

package com.junittest.testcases;

import org.junit.Test;

import singletons.SingletonClass;

import com.junittest.test.MyClass;

import junit.framework.TestCase;

public class Test2 extends TestCase{
MyClass m = new MyClass();
    public void setUp() {
        SingletonClass sc = SingletonClass.getInstance();
        System.out.println(SingletonClass.callCount);
    }

    @Test
    public void test3() {
        assertEquals(5, m.add(2,3));
    }

    @Test
    public void test4() {
        assertEquals(-2, m.sub(2,3));
    }
}

Test1类:

package com.junittest.testcases;

import org.junit.Test;

import singletons.SingletonClass;

import com.junittest.test.MyClass;

import junit.framework.TestCase;

public class Test1 extends TestCase{
    MyClass m = new MyClass();

    public void setUp() {
        SingletonClass sc = SingletonClass.getInstance();
        System.out.println(SingletonClass.callCount);
    }

    @Test
    public void test1() {
        assertEquals(4, m.add(2,3));
    }

    @Test
    public void test2() {
        assertEquals(-1, m.sub(2,3));
    }


}

和一个TestSuite类:

package com.junittest.testcases;
import rules.SomeTest;
import singletons.SingletonClass;
import junit.framework.Test;
import junit.framework.TestSuite;

public class TestSuite1 {
    public static Test suite() {
        SingletonClass sc = SingletonClass.getInstance();
        System.out.println(SingletonClass.callCount);

        TestSuite suite = new TestSuite(TestSuite.class.getName());
        suite.addTestSuite(Test1.class);
        suite.addTestSuite(Test2.class);
        suite.addTestSuite(Test3.class);
        return suite;
    }
}

问题是它在从eclipse从JUnit运行TestSuite1类时忽略了Test3类中的@规则标签,因此输出不如预期。为什么它忽略了@规则标签。有没有其他选择来执行所有三种情况?

共有1个答案

卢鸿彩
2023-03-14

您正在混合JUnit3(JUnit.framework.)和JUnit4(org.JUnit.)代码。如果只使用JUnit 4,这个问题应该会消失。

  1. Remove扩展TestCase(它们很简单,不需要,因为您的测试是用@Test注释的)
  2. @Before注释添加到setUp()方法中
  3. 使用JUnit4的套件:https://github.com/junit-team/junit/wiki/Aggregating-tests-in-suites
 类似资料:
  • 并添加注释 我得到一条消息:没有测试找到test runner JUnit5,并且在Problems选项卡中有SpringBootTest.jar无法读取或者不是有效的ZIP文件 也试过 我也试过: 如果我将字符串myUrl硬编码为“http://localhost:8090”,则测试工作正常,因此问题在于@value不工作

  • 问题内容: 我有以下测试: 但是JUnit报告说,测试失败了,尽管它按预期方式抛出。 我是否需要配置其他东西才能运行此程序? 我现在用 当我删除前缀时,仍然出现错误。 我得说我是在Eclipse上运行这些测试,但它配置为使用JUnit 4 Runner。 问题答案: 问题是,嵌套测试的类是的扩展。由于这是JUnit 3样式,因此注释不起作用。 现在,我的测试班是一个单独的班。

  • 嗨,我正试图解析文档或pdf文件中的文本。每当我尝试使用:

  • 我有一个简单的类叫BeaconDao 然而,当我用@service或@component标记beaconDao时,一切都运行得非常好。有人能看出问题所在吗?

  • 问题内容: 我正在尝试使用Java批注,但似乎无法使我的代码认识到其中存在。我究竟做错了什么? 问题答案: 您需要使用注释界面上的@Retention注释将注释指定为运行时注释。 即

  • 更新: 如果我使用注释和路径:/*和/api/*-site可以很好地工作。但是因为我使用全局静态IP,所以我不能为每个IP创建一个以上的入口。如果我使用-site返回错误: