随着黄瓜测试,功能表现为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为可变变量?
我想做一个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下
我尝试使用以下方法通过一组素数键从oracle数据库导出数据集:
TablesDependencyHelper.getDataset(connection, fullTableName ,
new TreeSet(Arrays.asList(
new BigDecimal[]{new BigDecimal(1)})));
Run Code Online (Sandbox Code Playgroud)
这会抛出一个45mb的数据文件!!!,检查文件我意识到问题是对带有复合键(6个外键)的表的引用,而不是导出唯一引用的注册表,它占用了整个表数据.¿我认为这是DBUnit的错误,任何人都知道这个方法的解决方案?
我开发了一个很好用的 android 应用程序,我想将它迁移到桌面是否有任何工具或简单的方法来做到这一点?如果不能,您至少可以给我一个在桌面上运行 android 应用程序的解决方案(类似于模拟器,但没有 android os 界面的独立应用程序)。
我在理解如何理解和使用仅出现在函数的返回类型中的类型变量时遇到了一些麻烦.
我正在尝试使用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) 我昨天和一些同事一起探索了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中自动派生密封特征族的订单?
例如,能够这样做会很高兴:
sealed trait Letters
case object A extends Letters
case object B extends Letters
(A < B) == True
Run Code Online (Sandbox Code Playgroud)
这感觉就像Shapeless可以处理的东西,但我不知道这是否存在.
我有一个能够持久保存任何类型的方法,只要该类型有一个io.circe.Encoder[A]实例,如下所示:
def persist[A](a: A)(implicit ea: Encoder[A]): Boolean
现在在测试时,我可以在密封特性下创建任何旧案例类或一组案例类,创建一个ADT,并使用自动类型类派生来创建Encoder,并创建ScalaCheck Arbitrary实例,这使得测试非常好.
是否有可能以某种方式使用Shapeless来创建案例类的任意族(因此自动派生Encoder和Arbitrary实例),以便我可以确定我的persist方法适用于任何类型?
我不知道从哪里开始,更不用说为此描述一种类型了.
对于此更新查询
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 方法()进行更新?在休眠中是否可以这样做?
是否可以使用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很陌生,所以我不能完全确定我是在尝试做一些疯狂的事情,还是想错过一些简单的事情.
我觉得我离得更近了.我可以这样实现: …