【问题标题】:After creation of Junit test cases, the "Run as Junit Test" disappears创建 Junit 测试用例后,“Run as Junit Test”消失
【发布时间】:2019-05-30 23:37:42
【问题描述】:

我使用 Eclipse 中的菜单选项制作了一个 Junit 测试用例。 我得到了“作为 JUnit 测试运行”选项。 但是当我完成更改后,我注意到“Run as JUnit Test”消失了。

经过进一步分析,我发现我最初的 TestClass 定义如下:

public class SampleTest
{
....
}

但我不得不将类定义更改为跟随

public class SampleTest<T>   
{
..
}

所以我注意到添加泛型是创建行为。 我查看了以下链接:

Run As JUnit not appearing in Eclipse - using JUnit4

Missing "Run as JUnit Test"

public class SampleTest<T>
{
..
}

但这些链接与我的问题不太相关。 因此,我需要了解包含泛型与行为的原因。

【问题讨论】:

  • 为什么要在测试类中使用泛型?你打算什么时候定义它的类型?

标签: java eclipse junit junit4


【解决方案1】:

为了运行一个 JUnit 测试类 Eclipse 需要

  1. 通过调用默认构造函数来创建测试类的实例,
  2. 调用该实例上的所有 @Test 方法

问题出在第 1 步:Eclipse 不知道在构造函数中使用哪种类型 T
它应该使用new SampleTest&lt;Object&gt;()new SampleTest&lt;WhatEver&gt;()?
所以它决定它不是一个有效的 JUnit 测试类 并且不提供 Run as JUnit Test 选项。

【讨论】:

  • 我认为这是一个有效的解释,因为没有办法推断该类是一个有效的 JUnit 测试用例。
【解决方案2】:

我可能无法补充为什么泛型会从启动中删除 JUnit,但通常测试类充当包装器来测试特定类,例如:

public class Sample<T>
{
    ...
}

public class SampleTest
{

    Sample<TypeHere> sample;

    @Before
    public void setUp() throws Exception {
    }
        sample= new Sample<OrTypeHere>(...);
        ...
    }

    @Test
    public void whenConditionOne_verifyExpectedSituation() throws Exception {

        ...
    }
}

【讨论】:

  • 当您的测试类中不存在JUnit3 测试时,在您的测试类之前添加@RunWith(JUnit4.class) 是可选的,这是我不久前注意到的,但可能有助于强制测试JUnit4
猜你喜欢
  • 1970-01-01
  • 2011-03-29
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 1970-01-01
  • 2013-04-08
相关资源
最近更新 更多