所以基本上我正在寻找用于在项目或工作请求上编写技术和功能规范的良好模板.
你用什么?在编写规范时你有多深?您可以提供的任何其他一般提示将不胜感激.
我的公司非常需要这些.我为承包商工作,现在我们根本不使用这些文件.
编辑:我已经阅读了Joel对无痛规范的看法,我真的很喜欢它,但还有其他意见:)
我在Scala中使用Specs2和ScalaTest来处理BDD.当我断言不应该抛出给定的异常时,我已经在Specs2中写下了期望.
"do something" in {
{
....
} must not(throwA[MyException])
}
Run Code Online (Sandbox Code Playgroud)
我希望能够在ScalaTest中编写等效的代码:
"do something" in {
evaluating {
....
} should not produce[MyException]
}
Run Code Online (Sandbox Code Playgroud)
但这不编译,我找不到这样做的方法.这甚至可能吗?
提前谢谢了.
Scala提供了不同测试框架的选择,但我想知道它们的成熟度和稳定性是否存在差异以及它们提供了哪些独特的功能.
是否有一个特定的适合各种发展的?
不同的框架可以相互交互,也可以与针对其他语言的测试运行者互操作?
I am using mockito and trying to mock a scala object.
object Sample { }
//test
class SomeTest extends Specification with ScalaTest with Mockito {
"mocking should succeed" in {
val mockedSample = mock[Sample]
}
}
Run Code Online (Sandbox Code Playgroud)
这给了我两个编译错误.
error: Not found type Sample
error: could not find implicit value for parameter m:
scala.reflect.ClassManifest[<error>]
Run Code Online (Sandbox Code Playgroud)
如果我将Sample从对象更改为类,则可以正常工作.有可能用mockito模拟scala对象吗?如果有,怎么样?
我现在正在学习Scala.我看到有两个测试框架,ScalaTest和Specs.我唯一的问题是我还不能用语言来决定哪个更好.此外,我习惯在代码之前编写测试,目前我还不知道如何在函数式编程中进行测试.理想情况下,我想以TDD方式学习Scala,有没有关于它的资源?
我使用Specs BDD库编写Scala单元测试(http://code.google.com/p/specs).在我的代码中,如果我想断言抛出类型为ClassNotFoundException的异常,那么我可以编写以下内容码:
a must throwA[ClassNotFoundException]
Run Code Online (Sandbox Code Playgroud)
但是,我想测试相反的情况,iei想断言"不会"抛出ClassNotFoundException类型的异常.
我尝试使用非否定匹配器,如下:
a must throwA[ClassNotFoundException].not
Run Code Online (Sandbox Code Playgroud)
但那没有用.我收到编译错误.那么,有什么方法可以断言例如ClassNotFoundException类型的异常不被抛出?
请帮助谢谢
在开源项目中,我看到以下两种编写规范的方法:
评论中的规范
@spec start_link() -> {ok, pid()}
Run Code Online (Sandbox Code Playgroud)
源代码中的规范
-spec start_link() -> {ok, pid()}
Run Code Online (Sandbox Code Playgroud)
有什么不同?一个比另一个更受欢迎吗?
Scala 重写的specs2测试框架将自动化测试与scalacheck集成在一起.specs2文档中给出的关于如何将scalacheck与specs2一起使用的示例使用整数或更复杂的自定义生成器,如eric的json示例中所示.
虽然试图让一个稍微不那么复杂的例子工作,但我很难挣扎,因为我不知道如果我想生成String参数而不是Integers,会如何使用specs2和scalacheck.这个快速入门示例如何?
import org.scalacheck._
object StringSpecification extends Properties("String") {
property("startsWith") = Prop.forAll((a: String, b: String)
=> (a+b).startsWith(a))
property("endsWith") = Prop.forAll((a: String, b: String)
=> (a+b).endsWith(b))
// Is this really always true?
property("concat") = Prop.forAll((a: String, b: String) =>
(a+b).length > a.length && (a+b).length > b.length
)
property("substring") = Prop.forAll((a: String, b: String) =>
(a+b).substring(a.length) == b
)
property("substring") = Prop.forAll((a: String, b: String, c: String) =>
(a+b+c).substring(a.length, a.length+b.length) == b
) …
Run Code Online (Sandbox Code Playgroud) 我对Scala很新,所以请保持温柔.
在我正在构建的应用程序中,我正在使用Akka演员,我想编写一些单元测试.我找到了为Akka演员编写单元测试的官方文档
但我无法确切地知道它应该如何运作.特别是,
val actorRef = TestActorRef(new MyActor)
// hypothetical message stimulating a '42' answer
val future = actorRef ? Say42
val Success(result: Int) = future.value.get
result must be(42)
Run Code Online (Sandbox Code Playgroud)
当我尝试的时候,我得到了not found: value Success,这并不奇怪.
然后我找到了如何测试Scala actor的示例
val actorRef = TestActorRef[TickTock]
implicit val timeout = Timeout(5 seconds)
val future = (actorRef ? new Tick("msg")).mapTo[String]
val result = Await.result(future, timeout.duration)
Assert.assertEquals("processed the tick message", result)
Run Code Online (Sandbox Code Playgroud)
诚然,这可能是旧的,但它很容易理解,更接近我通常使用的时候,我想使用期货,最重要的是工作.它确实需要我声明一些像ActorSystem,超时等这样的暗示,这似乎不是官方方式的情况......
如果可能的话,我想使用官方文档提出的方法,所以如果有人能帮助我了解它是如何工作的(尤其是Success位)以及如何使用它,我将不胜感激.