小编car*_*s22的帖子

在ScalaTests或Spec2中模拟静态方法

我想在我当前的maven/java项目中使用scala单元测试,因为它具有BDD功能.但是,我的一些模型类具有静态CRUDE方法,例如Edit.save().有什么技术可以模拟Scala中对内部静态方法的隐式调用吗?

对于常规Java测试,可以使用PowerMock注释轻松完成.我的问题是我们如何使用任何scala测试框架(ScalaTest,Specs2)来做同样的事情.

我了解到ScalaMock可以提供帮助,但' GeneratedMockFactory '特性不存在于他们的maven依赖关系中(下面列出).它似乎只适用于SBT项目.

我的scala测试库:

    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.10.0</version>
    </dependency>
    <dependency>
        <groupId>org.scalatest</groupId>
        <artifactId>scalatest_2.10</artifactId>
        <version>2.0.M5b</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.scalamock</groupId>
        <artifactId>scalamock-scalatest-support_2.10</artifactId>
        <version>3.0.1</version>
    </dependency>        
Run Code Online (Sandbox Code Playgroud)

这就是我今天scala测试的样子:

package com.foo.edit

import org.scalatest._
import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
import com.foo.models.Edit

@RunWith(classOf[JUnitRunner]) // This line binds the test with maven-surefire runner
class EditSpec extends FlatSpec with ShouldMatchers {

  "Edit" should "update name and website" in {
    val document = new util.HashMap[String, String]() {
      put("name", "A Name")
      put("website", "www.domain.com")
    }

    // This is the test subject, it's …
Run Code Online (Sandbox Code Playgroud)

java scala mocking

5
推荐指数
0
解决办法
919
查看次数

放置邮箱的算法,以最小化居民获取邮件的总距离

假设输入被指定为建筑物对象的数组,其中每座建筑物都具有一定数量的居民,距离街道的起点有一定距离。

总距离= SUM(距离[i] *#居民[i])

我在这里发现了两个相似的问题,但它们的要求略有不同:

  • 最小化加权总和:此问题的解决方案找到了跨越所有点的最小路径。在这里,我正在寻找从每个建筑物到邮箱所在位置的总距离的最小总和。

  • 到位置的最小总距离:它使用2D坐标,更重要的是,该解决方案未考虑每个位置的权重(居民人数)。

在阅读《编程面试要素》(这本非常不错的书,BTW)时,我看到了这个问题,它被列为快速选择算法的一种变体。考虑到中位数是使距离总和最小化的点,因此该解决方案似乎涉及快速选择以在O(N)中的街道“中间”位置找到建筑物。

但是我无法弄清楚如何对每座建筑物上的居民进行核算,仍然保持解决方案的线性。

algorithm linear-programming

5
推荐指数
1
解决办法
1043
查看次数

标签 统计

algorithm ×1

java ×1

linear-programming ×1

mocking ×1

scala ×1