2017-09-28 10 views
-1

저는 테스트 프레임 워크로 Spek를 사용하고 있으며 기본 클래스에 대한 테스트 단계를 공유 할 때 문제가 있습니다.spek으로 테스트하고 기본 클래스의 기본 테스트 케이스를 공유하십시오.

나는 추상 기본 클래스와 두 개의 파생 클래스가 있습니다.

abstract class Base { 
    abstract fun send() 
} 
class Foo : Base() { 
    override fun send() {} 
    fun anotherFunction() { } 
} 
class Bar : Base() { 
    override fun send() {} 
    fun differentFunction() { } 
} 

지금 내 질문은 : 어떻게 분류 사람들을 위해 Speks을 만들 수 있지만 기본 Spek 보낸 한 번 send()에 대한 테스트를 정의?

abstract class BaseSpek(base: Base) : Spek({ 
    it("test the base") { ... } 
}) 
abstract class FooSpek() : BaseSpek(???) 

내 방식 중 어느 것도 작동하지 않습니다 보인다 :

첫 번째 방법SubjectSpek

class BaseSpek : SubjectSpek<Base>({ 
    subject { 
     // ??? Can't instantiate Base because it is abstract 
    } 

    it("test the base") { ... } 
}) 
class FooSpek : SubjectSpek<Foo>({ 
    itBehavesLike(BaseSpek) 

    it("test anotherFunction") { ... } 
}) 

두 번째 방법 상속을 사용하는 것이었다 사용하는 것이 었습니다. 어떤 제안이 어떻게 해결할 수 있습니까? Spek의 ​​향후 릴리스에서 가능한 변경 사항에 대해 Spek-Author의 주목을 받아야합니까?

+0

downvote 때 의견을주십시오. 저자는 미래에 더 나은 질문을 쓰려고 실수를 알고 있어야합니다. – guenhter

답변

1

SubjectSpek이 올바른 방법입니다.

abstract class BaseSpec: SubjectSpek<Base>({ 
    it("test base") { ... } 
}) 

object FooSpec: BaseSpec<Foo>({ 
    subject { ... } 

    // ugly for now, until Spek supports @Ignore 
    itBehavesLike(object: BaseSpec() {}) 

    it("test another") { ... } 
})