小编Noe*_*l M的帖子

是否可以使用Cucumber-jvm Scala避免可变状态?

随着黄瓜测试,功能表现为Given,When并且Then通常为三个独立的方法来实现.这些方法通常需要共享值,这似乎是可变变量的方法.

采用以下简单示例:

一项功能:

Given the digit 2
When it is multiplied by 3
Then the result is 6
Run Code Online (Sandbox Code Playgroud)

和黄瓜方法:

class CucumberRunner extends ScalaDsl with EN with ShouldMatchers {

  var digitUnderTest: Int = -1

  Given("""^the digit (\d)$""") { digit: Int =>
    digitUnderTest = digit
  }

  When("""^it is multiplied by 3$""") {
    digitUnderTest = digitUnderTest * 3
  }

  Then("""^the result is (\d)$""") { result: Int =>
    digitUnderTest should equal (result)
  }
}
Run Code Online (Sandbox Code Playgroud)

是否有任何方法,可能是内置于Scala测试或者Scala的Cucumber-jvm,这使我不能表达digitUnderTest为可变变量?

scala cucumber-jvm

7
推荐指数
1
解决办法
781
查看次数

Maven pom.xml,SCM和发布

我想做一个mvn版本:准备,将从版本中删除"-SNAPSHOT"并在SVN中标记它.

我在pom.xml中有这些设置:

<scm>
  <connection>scm:svn:http://subversion.local:3690/svn/projects/x/trunk</connection>
  <developerConnection>scm:svn:http://subversion.local:3690/svn/projects/x/tags</developerConnection>
  <url>scm:svn:http://subversion.loi.local:3690/svn/projects/x/tags</url>
 </scm>
Run Code Online (Sandbox Code Playgroud)

但这些并不像我想要的那样.相反,它会从/标签中获取所有内容,并在/标签下重新标记它.

再一次,我想要的,从HEAD中取出"-SNAPSHOT"并将其标记在/ tags下

release pom.xml maven maven-release-plugin

6
推荐指数
1
解决办法
1万
查看次数

DBUnit数据集按主键集导出

我尝试使用以下方法通过一组素数键从oracle数据库导出数据集:

TablesDependencyHelper.getDataset(connection, fullTableName , 
                    new TreeSet(Arrays.asList(
                        new BigDecimal[]{new BigDecimal(1)})));
Run Code Online (Sandbox Code Playgroud)

这会抛出一个45mb的数据文件!!!,检查文件我意识到问题是对带有复合键(6个外键)的表的引用,而不是导出唯一引用的注册表,它占用了整个表数据.¿我认为这是DBUnit的错误,任何人都知道这个方法的解决方案?

java dbunit

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

有没有办法在桌面应用程序中转换安卓应用程序?

我开发了一个很好用的 android 应用程序,我想将它迁移到桌面是否有任何工具或简单的方法来做到这一点?如果不能,您至少可以给我一个在桌面上运行 android 应用程序的解决方案(类似于模拟器,但没有 android os 界面的独立应用程序)。

java android simulator pc

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

了解仅出现在返回类型中的类型变量

我在理解如何理解和使用仅出现在函数的返回类型中的类型变量时遇到了一些麻烦.

我正在尝试使用diagram-cairo逐个像素地比较两个图表.该renderToList函数的类型:

renderToList :: (Ord a, Floating a) => Int -> Int -> Diagram Cairo R2 -> IO [[AlphaColour a]]
Run Code Online (Sandbox Code Playgroud)

返回列表清单AlphaColour a.记住,轴承a(Ord a, Floating a),我想我可以对这些使用数学和比较操作AlphaColour a值:

import Diagrams.Prelude
import Diagrams.Backend.Cairo
import Diagrams.Backend.Cairo.List
import Data.Colour
import Data.Colour.SRGB
import Data.Foldable (fold)
import Data.Monoid

cmp :: Diagram Cairo R2 -> Diagram Cairo R2 -> Diagram Cairo R2 -> IO Bool
cmp base img1 img2 = do
                baseAlphaColours <- renderToList 400 400 …
Run Code Online (Sandbox Code Playgroud)

haskell type-variables haskell-diagrams

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

使用Shapeless的方法需要的证据多于必要的证据

我昨天和一些同事一起探索了Shapeless,我们决定编写一个玩具方法,将一个添加到case类的第一个参数,当该参数为Int:

def addOneToCaseClass[C, H <: HList, E, T <: HList]
    (c: C)
    (implicit gen: Generic.Aux[C, H],
              h:   IsHCons.Aux[H, E, T],
              ev:  E =:= Int,
              ev2: (Int :: T) =:= H
    ): C = {

  val hList = gen.to(c)

  val elem = hList.head
  val tail = hList.tail

  val newElem = elem + 1

  gen.from(newElem :: tail)
}
Run Code Online (Sandbox Code Playgroud)

在我看来,ev2参数是多余的 - 当然可以推断出E :: T =:= Int :: T,但编译器无法实现这一点.

有什么特别的原因吗?

scala shapeless

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

在Scala中自动导出密封特征/ ADT排序

是否可以在Scala中自动派生密封特征族的订单?

例如,能够这样做会很高兴:

sealed trait Letters
case object A extends Letters
case object B extends Letters

(A < B) == True
Run Code Online (Sandbox Code Playgroud)

这感觉就像Shapeless可以处理的东西,但我不知道这是否存在.

scala generic-programming shapeless

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

是否有可能自动推导出密封的特质家族/ ADT?

我有一个能够持久保存任何类型的方法,只要该类型有一个io.circe.Encoder[A]实例,如下所示:

def persist[A](a: A)(implicit ea: Encoder[A]): Boolean

现在在测试时,我可以在密封特性下创建任何旧案例类或一组案例类,创建一个ADT,并使用自动类型类派生来创建Encoder,并创建ScalaCheck Arbitrary实例,这使得测试非常好.

是否有可能以某种方式使用Shapeless来创建案例类的任意族(因此自动派生EncoderArbitrary实例),以便我可以确定我的persist方法适用于任何类型?

我不知道从哪里开始,更不用说为此描述一种类型了.

scalacheck shapeless circe

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

休眠更新查询问题

对于此更新查询

update TestDB.dbo.MyEmp set empname=? where empid=?
Run Code Online (Sandbox Code Playgroud)

我在我的 DAO 课上写的

MyEmployee myEmployee = new MyEmployee();

MyEmployee myEmployee =(MyEmployee )session.load(MyEmployee.class, 
  new Integer(1700));
myEmployee.setName("updatedName"); 
session.update(myEmployee );
Run Code Online (Sandbox Code Playgroud)

它工作正常,但我需要知道下面提到的这种类型的更新查询

update TestDB.dbo.MyEmp set empsalary=? where empid=? && empname = ?
Run Code Online (Sandbox Code Playgroud)

(即,我需要通过在 where 子句中使用两个条件来更新表,这可以通过 HQL 来完成,但我想知道我们如何使用 saveOrUpdate 方法来实现这一点..)

如何使用 update 或 saveOrUpdate 方法()进行更新?在休眠中是否可以这样做?

java orm dao hibernate sql-update

4
推荐指数
1
解决办法
7819
查看次数

从案例类中提取给定类型的值

是否可以使用Shapeless从案例类中提取特定类型的值?到目前为止,我可以这样做:

def fromCaseClass[T, R <: HList](value: T)(implicit ga: Generic.Aux[T, R]): R = {
  ga.to(value)
}
Run Code Online (Sandbox Code Playgroud)

然后,这允许我在程序上提取值:

scala> case class ServiceConfig(host: String, port: Int, secure: Boolean)
defined class ServiceConfig

scala> val instance = ServiceConfig("host", 80, true)
instance: ServiceConfig = ServiceConfig(host,80,true)

scala> fromCaseClass(instance).select[Boolean]
res10: Boolean = true

scala> fromCaseClass(instance).select[Int]
res11: Int = 80
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试编写一个函数来执行此操作时,我会遇到未找到的implicits:

def getByType[C, X](value: C)(implicit ga: Generic.Aux[C, X]): X = {
  fromCaseClass(value).select[X]
}

<console>:12: error: could not find implicit value for parameter ga: shapeless.Generic.Aux[C,R]
       fromCaseClass(value).select[X]
Run Code Online (Sandbox Code Playgroud)

据推测我得到的是因为编译器无法验证我的参数不是case类.有没有办法让我这样做?

我对Shapeless很陌生,所以我不能完全确定我是在尝试做一些疯狂的事情,还是想错过一些简单的事情.

更新

我觉得我离得更近了.我可以这样实现: …

scala shapeless

4
推荐指数
1
解决办法
650
查看次数