2016-03-15 91 views
0

我正在做无效编程原理当然Coursera。 在其中一项任务中,我需要使用scalacheck类。 我有以下的测试类中的IntelliJ开放:无法运行scalacheck

package quickcheck 

import org.scalatest.FunSuite 

import org.junit.runner.RunWith 
import org.scalatest.junit.JUnitRunner 

import org.scalatest.prop.Checkers 
import org.scalacheck.Arbitrary._ 
import org.scalacheck.Prop 
import org.scalacheck.Prop._ 

import org.scalatest.exceptions.TestFailedException 

object QuickCheckBinomialHeap extends QuickCheckHeap with BinomialHeap 

@RunWith(classOf[JUnitRunner]) 
class QuickCheckSuite extends FunSuite with Checkers { 
    def checkBogus(p: Prop) { 
    var ok = false 
    try { 
     check(p) 
    } catch { 
     case e: TestFailedException => 
     ok = true 
    } 
    assert(ok, "A bogus heap should NOT satisfy all properties. Try to find the bug!") 
    } 

    test("Binomial heap satisfies properties.") { 
    check(new QuickCheckHeap with BinomialHeap) 
    } 

    test("Bogus (1) binomial heap does not satisfy properties.") { 
    checkBogus(new QuickCheckHeap with Bogus1BinomialHeap) 
    } 

    test("Bogus (2) binomial heap does not satisfy properties.") { 
    checkBogus(new QuickCheckHeap with Bogus2BinomialHeap) 
    } 

    test("Bogus (3) binomial heap does not satisfy properties.") { 
    checkBogus(new QuickCheckHeap with Bogus3BinomialHeap) 
    } 

    test("Bogus (4) binomial heap does not satisfy properties.") { 
    checkBogus(new QuickCheckHeap with Bogus4BinomialHeap) 
    } 

    test("Bogus (5) binomial heap does not satisfy properties.") { 
    checkBogus(new QuickCheckHeap with Bogus5BinomialHeap) 
    } 
} 

当我试图运行它,我得到这个输出:

+ Heap.min1: OK, passed 100 tests. 
+ Heap.minOfTwo: OK, passed 100 tests. 
+ Heap.insertAndDelete: OK, passed 100 tests. 

Heap.min1Heap.minOfTwoHeap.insertAndDelete是我要检查的方法这很好。但是,它们传递的测试与我试图运行的测试文件没有任何关系。

如何从Intellij正确运行此测试文件?我可以运行它而不是从别的地方(如sbt控制台)?

回答

0

你使用此数据库ScalaTest? 从sbt您可以运行代码/测试它,编译和更新库(比在Intellij中更快)并执行许多其他有用的事情

+0

我了解你例子显示的代码。我认为如果显示你的代码会更好。 (更清楚地说明问题)。测试位置必须是:src/test/scala/。也许你错过了一些配置。 在sbt中运行测试: sbt> test –

0

在IntelliJ中,在编辑器中打开该文件并不能确保它是测试类将在您执行测试时运行。您的项目可以包含多个运行/调试配置,您可以使用Run > Edit Configurations进行编辑。要仅执行quickcheck.QuickCheckSuite中定义的测试,您需要一个Test Class:设置为quickcheck.QuickCheckSuite的ScalaTest配置。然后你可以用Run > Run…执行它。

或者,从SBT,您可以运行