如何在scala的specs2测试中使用jUnit的TemporaryFolder?

2024-04-26

我正在使用 Playframework 编写测试,我需要创建一个临时文件。

@RunWith(classOf[JUnitRunner])
class DiagnosticSpec extends Specification {
  @Rule
  val temporaryFolder: TemporaryFolder = new TemporaryFolder()

  "my test" should {
     "run with temporary file" in {
        val file = temporaryFolder.newFile()   // line.35
        // go on with the file
     }
  }
}

但是当我运行这个测试时,它总是抛出异常:

[error]     IllegalStateException: the temporary folder has not yet been created (MyTest.scala:35)

可以在specs2中使用吗?如果没有,如何在specs2中创建临时文件,并在测试后自动删除?


您不能将 JUnit 规则与 specs2 一起使用来进行安装/拆卸。你需要使用AroundExample or FixtureExample为了那个原因:

trait TempFile extends AroundExample {
  // this code is executed "around" each example
  def around[R : AsResult](r: =>Result) = 
    val f = createFile("test")
    try AsResult(r)
    finally f.delete
}

class MySpec extends Specification with TempFile {
  "test" >> {
    // use the file here
    val file = new File("test")
    ...
  }
}

// Or
trait TempFile extends FixtureExample[File] {
  // this code is executed "around" each example
  def fixture[R : AsResult](f: File => R) = 
    val f = createFile("test")
    try AsResult(f(r))
    finally f.delete
}

class MySpec extends Specification with TempFile {
  // the file can be "injected" for each test
  "test" >> { file: File =>
    // use the file here
    ...
  }
}

UPDATE

The TemporaryFolderTrait 更接近原始的 JUnit 规则:

trait TemporaryFolder extends Specification {
  /** delete the temporary directory at the end of the specification */
  override def map(fs: => Fragments): Fragments = {
    super.map(fs.append(step(delete)))
  }

  lazy val tempDir = {
    val dir = File.createTempFile("test", "")
    dir.delete
    dir.mkdir
    dir
  }

  /** create a new file in the temp directory */
  def createNewFile = {
    val f = new File(tempDir.getPath+"/"+UUID.randomUUID.toString)
    f.createNewFile
    f
  }

  /** delete each file in the directory and the directory itself */
  def delete = {
    Option(tempDir.listFiles).map(_.toList).getOrElse(Nil).foreach(_.delete)
    tempDir.delete
  }
}

class MySpec extends Specification with TemporaryFolder {
  "test" >> {
    // use the file here
    val file = createNewFile
    ...
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在scala的specs2测试中使用jUnit的TemporaryFolder? 的相关文章

  • 如何在 JUnit 测试中引导weld-se

    我有一个用于单元测试的 Maven 项目 并且想使用 CDI 我已将weld se 依赖项放入 pom xml 中 如下所示
  • 无法加载 Spring ApplicationContext

    我正在为一个有点复杂的 spring 应用程序编写单元测试 我想加载 spring 上下文以便使用定义的 bean 我的 context xml 位于 src main resources context xml Maven 构建后 con
  • 输入类型=“文件”接受=“图像/*”在手机间隙不起作用?

    我尝试使用 HTML PhoneGap 2 6 0 制作一个 Android 应用程序 它支持
  • 从文件中读取第n行的快速方法

    介绍 我有一个名为的 C 进程MyProcess我称之为nbLines时间 地点nbLines是一个名为的大文件的行数InputDataFile txt在其中可以找到输入数据 例如调用 MyProcess InputDataFile txt
  • JUnit 测试 Spymemcached 客户端

    我有一个类围绕spymemcached 客户端 我想编写一些JUnit 测试来测试getValue 和addKey 方法是否有效 问题是无法从测试服务器访问spymemcached 服务器 所以我想这里需要一些模拟 我的简化类看起来像这样
  • android:检查应用程序中文件是否存在

    我的应用程序的资产文件夹中有几个 html 文件 我的应用程序根据设备语言加载这些文件 当我检查文件是否存在时 它说不存在 但是当我使用 browser loadUrl filename 加载该文件时 它加载得很好 以下代码将帮助您理解我的
  • 在 Android 中下载文件

    我正在使用以下代码在 Android 中下载文件 public class FileDownloadActivity extends Activity ProgressDialog mProgressDialog Called when t
  • 从jar中读取资源文件

    我想从我的 jar 中读取资源 如下所示 File file file new File getClass getResource file txt toURI BufferedReader reader new BufferedReade
  • Spring JUnit 测试未加载完整的应用程序上下文

    您好 我正在尝试使用 spring junit 测试用例 并且我需要加载完整的应用程序上下文 然而 junit 测试不会初始化完整的应用程序上下文 测试类 RunWith SpringJUnit4ClassRunner class Spri
  • 如何在会话自动加载的同时在 vim 中打开文件?

    我在 vimrc 中有以下代码 可以在 vim 启动时自动保存 加载会话 Session saving Automatically save rewrite the session when leaving Vim augroup leav
  • 如何对 SQL 查询进行单元测试?

    我有课DBHandler它接受一个查询 通过 SQL Server 运行它 检查错误并返回结果 我如何对这个类进行单元测试 Edit 我会尽量说得更准确 DBHandler负责将查询传递到服务器 为了测试它是否确实做到了这一点 抛出正确的异
  • 使用 Ant 运行 JUnit 测试

    我正在尝试运行我的 JUnit 测试用例 但我不断收到错误 Test com capscan accentsWorld FAILED 报告已创建 但测试未运行 这是我的蚂蚁代码
  • jUnit 中的 CollectionAssert?

    是否有与 NUnit 并行的 jUnit 使用 JUnit 4 4 您可以使用assertThat 与Hamcrest http hamcrest org JavaHamcrest 代码 不用担心 它是随 JUnit 一起提供的 不需要额外
  • 在 C# 中创建文件的最快方法

    我正在运行一个程序来测试在包含大量文件的文件夹中查找和迭代所有文件的速度 该过程中最慢的部分是创建超过 100 万个文件 我目前正在使用一种非常幼稚的方法来创建文件 Console Write Creating 0 N0 file s of
  • ActionContext.getContext().getParameters() 在 StrutsJUnit4TestCase 期间返回 null

    我正在通过 Maven 运行 JUnit 测试 其中正在测试进行以下调用的 struts 操作 java 方法 Gets this from the org apache struts2 util TokenHelper class in
  • Javascript 将 CSV 文件加载到数组中

    我正在 WordPress 中开发一个网页 该网页需要有一个包含所有县的组合框 我有一个 csv 格式的数据集 其中包含所有这些县的约 10k 行 当用户在下拉列表中选择一个县时 我只想在网页中显示所选县的数据 这是我的要求 在 WordP
  • 如何在Spring中模拟ModelMapper?

    我正在尝试为我的服务层编写单元测试 SpringBootTest class ClinicServiceTest Mock private ProcedureRepository procedureRepository InjectMock
  • 向每个表格单元格添加进度条以显示文件进度 - Java

    当您单击 加密 时 应用程序会对放入表中的每个文件进行加密 我想显示文件加密时的进度 然后 状态 列将从 未处理 更改为 已处理 类似于您查看电子邮件中附加的多个文件的方式 我一直在研究单元格渲染器和 ProgressBarTablecel
  • 在Android上保存文件时避免因中断而丢失数据?

    我想知道其他人在 Android 上保存文件时使用什么策略来避免数据丢失 我有几个游戏应用程序 本质上 它们可能会在用户暂停 onPause 时保存游戏状态 保存游戏 这在 99 99 的情况下有效 但每隔一段时间我就会收到一个保存游戏的例
  • 如何为Spring测试创建TestContext?

    我有一个相对较小的 Java 库 它实现了几十个 bean 没有数据库或 GUI 我创建了一个 Spring Bean 配置文件 其他 Java 项目使用该文件将我的 bean 注入到他们的东西中 我现在第一次尝试使用 Spring Tes

随机推荐

  • 流畅的界面是否会显着影响 .NET 应用程序的运行时性能?

    我目前正忙于为现有技术实现一个流畅的接口 这将允许类似于以下代码片段的代码 using var directory Open Directory path to some directory using var file Open File
  • ArrayList 调整大小

    我有一个 ArrayList 对象 我知道它的确切大小 有什么方法可以指定ArrayList不应该扩展其容量吗 List
  • 将数据库结果转为数组

    我刚刚为组织查询分层数据的 闭包表 方式制作了更新 添加 删除部分 如本幻灯片第 70 页所示 http www slideshare net billkarwin sql antipatterns strike back http www
  • 如何设置http请求的源IP?

    在发送 http 请求之前 我需要设置源 IP 地址 用于 IP 欺骗等 用于建立http连接的类是HTTPURLConnection 我在 stackoverflow 上找到了下面的链接 这非常有用 注册和使用自定义 java net U
  • 使用 Python 重新打开与 Power BI XMLA 端点的连接时出错

    我有以下 python 代码 它在函数运行时工作正常 但在第二次运行时失败 import adodbapi def connect and print input str print Function starting input str
  • 之间有什么区别?

    有什么区别 b and strong i and em 在 HTML XHTML 中 你应该什么时候使用每一个 他们有对普通网络浏览器渲染引擎具有相同的效果 但是有一个根本区别它们之间 正如作者所写讨论列表帖子 https web arch
  • TeamCity:PhantomJS 在 60000 毫秒内没有捕获,杀死

    我在 CI 环境中运行测试时遇到问题 该配置在使用 Node v6 0 0 npm 3 8 6 的 MacOS 10 11 6 El Capitan 上运行良好 但在使用 Node v4 2 2 npm 2 14 7 运行 Windows
  • 当应用程序繁忙时,如何防止用户在闪亮的应用程序上执行任何操作

    我有一个复杂的闪亮应用程序 有很多输入 传单地图等 我遇到的问题是 当应用程序忙于进行一些计算时 用户不断单击应用程序上的任意位置 有时应用程序会崩溃 我想阻止用户在应用程序繁忙时进行任何点击 重要的是 旋转器保持旋转器状态 而不是像在wa
  • 从 Django 缓存中删除特定项目?

    我正在使用站点范围的缓存内存缓存 http en wikipedia org wiki Memcached作为后端 当底层数据库对象更改时 我想使缓存中的页面无效 如果页面名称发生更改 那么我将使整个缓存无效 因为它会影响每个页面上的导航
  • 更改 iis 7 的 Inet 根文件夹

    我面临着一个非常令人恼火的挑战 我必须在生产服务器中部署 ASP NET MVC 3 应用程序 在这个生产服务器中我有两个驱动器C and D 我有权将我的网站放在D 数据文件夹我不能使用C 不幸的是 IIS 创建了Inet目录在C 显然
  • 如何使用 Android 模拟器查找 GPS 位置?

    你好 朋友们 我正在尝试查找 Android 模拟器的当前 GPS 位置 我已经使用了命令 geo fix 但是如果我尝试检索当前位置 它会显示异常 任何人都可以帮助我吗 从模拟器中您无法获取当前位置 你必须自己定位位置 试试这个 C an
  • 带有子列表的通用记录 TList?

    我想在 Delphi XE5 中使用带有子列表的通用记录 TList type TMyRecord record Value1 Real SubList TList
  • .htaccess 重定向 – 两个重定向之间的差异

    您能解释一下下面两个 htaccess 重定向之间的区别吗 第一个重定向是我最常使用的重定向 但它在最近的网站上不起作用 太多重定向 即使我没有任何设置 但第二个重定向有效 我很好奇 RewriteEngine On RewriteCond
  • 添加到 ArrayList 时出现 Java NullPointerException?

    我的代码抛出 NullPointerException 即使该对象似乎正确存在 public class IrregularPolygon private ArrayList
  • 使用 bash 脚本在 Info.plist 中添加/替换 URL 方案

    我想添加 替换 URL 方案Info plist使用 bash 脚本 命令创建文件 我尝试过sed命令有各种模式但没有成功 我们希望使用 Jenkins 自动生成构建 并且我们的 URL 方案可以针对各种构建进行更改 因此我们想要修改Inf
  • CMYK 2 RGB 问题

    我在将 CMYK 颜色转换为 RGB 时遇到问题 在互联网上有很多公式可以转换它 但例如当我将 CMYK 0 100 100 0 转换为 RGB 时 它得到的值是 255 0 0 但在 Adob e Photoshop 中 RGB 值是 2
  • 将列表组合成元组对 (x, y)

    我正在尝试组合通过传入的数字对sys argv 例子 python myscript py 35 12323 112 76767 36 33345 112 76890 33 68689 111 8980 我的目标是将它们变成元组中的两个集合
  • 使用 PInvoke 从 C# 读取具有“union”类型的 C 结构

    我正在尝试将用 C 构建的结构引入托管端 C 让我们假设这个结构 C 代码 typedef struct S int i union TypeA a TypeB b TypeC c uni S 现在 我创建 C 包装类 StructLayo
  • 查询 Firestore 中的特定日期

    我正在尝试查询 Firestore 中的指定日期 到目前为止我已经尝试过这段代码 let ref db collection schools doc DglhflywuybkOuCq7tGW let start new Date 2018
  • 如何在scala的specs2测试中使用jUnit的TemporaryFolder?

    我正在使用 Playframework 编写测试 我需要创建一个临时文件 RunWith classOf JUnitRunner class DiagnosticSpec extends Specification Rule val tem
Powered by Hwhale