有条件地忽略 JUnit 4 中的测试

2024-05-18

好的,所以@Ignore注释适合标记不应运行的测试用例。

但是,有时我想忽略基于运行时信息的测试。例如,如果我有一个并发测试,需要在具有一定数量核心的计算机上运行。如果这个测试在单处理器机器上运行,我认为仅仅通过测试是不正确的(因为它还没有运行),并且测试失败并破坏构建肯定是不正确的。

因此,我希望能够在运行时忽略测试,因为这似乎是正确的结果(因为测试框架将允许构建通过,但记录测试未运行)。我相当确定注释不会给我这种灵活性,并且怀疑我需要为相关类手动创建测试套件。但是,文档没有提及任何有关此内容的内容,并且查看了API http://junit.org/apidocs/junit/framework/TestSuite.html也不清楚如何以编程方式完成此操作(即如何以编程方式创建一个实例Test或类似的,相当于创建的@Ignore注解?)。

如果有人过去做过类似的事情,或者对我还能如何做有一个好主意,我会很高兴听到。


JUnit 的方法是在运行时执行此操作org.junit.Assume.

 @Before
 public void beforeMethod() {
     org.junit.Assume.assumeTrue(someCondition());
     // rest of setup.
 }

你可以在一个@Before方法或测试本身,但不是在@After方法。如果你在测试本身中这样做,你的@Before方法将运行。您也可以在@BeforeClass以防止类初始化。

假设失败会导致测试被忽略。

Edit:@RunIf注释来自Junit 扩展,他们的示例代码如下所示:

@Test
public void calculateTotalSalary() {
    assumeThat(Database.connect(), is(notNull()));
    //test code below.
}

更不用说捕获和使用来自的连接要容易得多Database.connect()方法是这样的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有条件地忽略 JUnit 4 中的测试 的相关文章

随机推荐

  • Prolog:子句在源文件中不在一起

    我有这段代码 Family tree female pen male tom male bob female liz female pat female ann male jim parent pam bob parent tom bob
  • Spring表单ModelAttribute字段验证避免400 Bad Request错误

    我有一个ArticleFormModel包含正常发送的数据html form由 Spring 使用注入 ModelAttribute注释 即 RequestMapping value edit method RequestMethod PO
  • 通过使用 navbarPanel() 并隐藏导航栏构建多页闪亮应用程序用户端(在 ui.R 中)?

    我想构建一个多页闪亮应用程序 我可以在其中控制用户可以看到哪个页面 迪安 阿塔利确实这个演示应用程序中有类似的东西 https github com daattali advanced shiny tree master multiple
  • 文件修改时间检查的成本

    对于Linux下包含少量字节的文件 我只需要处理自上次处理以来发生更改的时间 我通过调用 PHP 检查文件是否被更改clearstatcache filemtime 定期 由于整个文件总是很小 因此删除对 filemtime 的调用并通过将
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将
  • 如何使用 net/http 验证 ruby​​ 中的 SSL 证书链

    我如何验证网站的证书 例如https processing ukash com https processing ukash com 在 ruby 中使用 net http https Net HTTP new processing uka
  • 在 C# 中使用字段名称而不是列表数组中的索引

    我有一个getvalue包含包含 5 个项目的价目表的对象 我需要获取其中一个元素的值 我可以通过索引获取值 return getValue1 ValuationPrices 4 Value ToString 而不是使用4 索引 我想使用字
  • 使用 jasmine 在 angularJS 中注入服务来测试控制器

    我想了解如何使用 jasmine 和 angularJS 测试我的代码 我编写了一个带有控制器和注入服务的测试项目 现在我想测试控制器并尝试模拟注入的服务 但我没有找到一种方法来测试我的控制器的 到达 功能 这是我的jsfiddle htt
  • android视图的生命周期

    我希望在恢复活动后发生一些视图动画 但我无法成功捕获所有视图加载后以及动画在所有视图加载之前 动画转换之前 开始的时间 我尝试使用 onDraw onWindowFocusChange onResume 我发现 onDraw 是视图生命周期
  • 根据 VS2008 中的构建配置排除整个文件

    我的项目有三种不同的配置 这三种配置不需要将所有文件构建到应用程序中 实际上 我更希望能够从构建中排除这些文件 这将使我的应用程序更加轻量级 我正在寻找的是 if MYCONFIG or if DEBUG声明但用于文件 我已经读到这可以通过
  • 一个表可以有多个主键吗?

    我现在很困惑 也许你可以帮助我更好地理解这个问题 即一个表可以有两个主键 如果是 那么如何 如果没有 那为什么 您询问是否可以有多个主键field你当然可以 您只能有一个主键 但它可以包含唯一标识行所需的任意数量的列 创建表时使用类似这样的
  • 无法启动活动?

    在添加异步任务之前 我对代码进行了一些更改 我的应用程序可以正常工作 从远程服务器验证用户名和密码 但在登录成功消息消失时无法启动其他活动 有人建议我添加异步任务 现在我已经添加了该任务 但是当我输入正确的用户名和密码时 它会停止工作 当我
  • 对于 HTTPS,Request.UrlReferrer 为 NULL

    我在用 Request UrlReferrer AbsoluteUri 在我的项目中获取托管我的应用程序的 URL 如果我从 http 主机重定向 我可以获得 URL 但如果我从 https 主机重定向 我将得到 null 我怎样才能得到
  • Android:默认 XML 编辑器不再打开 [不支持的内容类型错误]

    我使用 Eclipse 在 Android 中开发应用程序已经有一段时间了 我最近将Android SDK平台更新到3 0 API 11 现在 我无法通过双击打开 AndroidManifest xml 或 Layout 文件夹中的任何其他
  • CompletableFuture 会吞掉异常吗?

    我一直在玩CompletableFuture并注意到一件奇怪的事情 String url http google com CompletableFuture
  • Java 中的无锁并发链表

    我想使用像中描述的链接列表this http reference kfupm edu sa content l o lock free linked lists using compare and 3368 pdf纸 但是 我在网上没有找到
  • Linq2sql:获取具有权重的随机元素的有效方法?

    Byt 可以说我有一个整数权重 即权重为 10 的元素被选择的概率是权重为 1 的元素的 10 倍 var ws db WorkTypes Where e gt e HumanId null e SeoPriority 0 OrderBy
  • 如何存储没有年份部分的生日?

    类似问题 Postgres 生日选择 https stackoverflow com questions 6913719 postgres birthdays selection 我们正在设计一项新功能 我们将存储人们生日的月份和日期部分
  • 当使用公式生成超链接时,VBA 打开 Excel 超链接不起作用

    使用公式生成的 Excel 超链接似乎存在错误 我使用的是 Excel 2010 我有一个电子表格 其中的单元格包含 URL 我的目标是执行以下两件事 将这些单元格变成超链接 创建一个键盘快捷键来打开这些超链接 这样我就不必使用鼠标了 为了
  • 有条件地忽略 JUnit 4 中的测试

    好的 所以 Ignore注释适合标记不应运行的测试用例 但是 有时我想忽略基于运行时信息的测试 例如 如果我有一个并发测试 需要在具有一定数量核心的计算机上运行 如果这个测试在单处理器机器上运行 我认为仅仅通过测试是不正确的 因为它还没有运