Kotlin Spec 1.1.x 사용법

14777 단어 JUnittestKotlinSpek
Spek에 대해서는, 이전에, 간단하게 소개한 것을 투고하고 있었습니다.
ぃ tp // m / 1000 / ms / 9f7148505895fd1d6760

그런데, 당시의 Spek는 아직, 버전 1.0에도 도달하지 않은 상태로, 지금 다시 사용해 보려고 하면(자), 이 기사와 같이는 가지 않게 되어 있었으므로, 다시 메모를 남겨두기로 합니다.

환경


  • macOS Sierra 10.12.4
  • Oracle JDK 1.8.0_121
  • Apache Maven 3.3.9 (Maven Wrapper)
  • Kotlin 1.1.2-2
  • Spek 1.1.1 (1.1.0에는 결함이 있으므로 버전에주의)
  • $ ./mvnw -version
    Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T01:41:47+09:00)
    Maven home: /Users/yo1000/.m2/wrapper/dists/apache-maven-3.3.9-bin/2609u9g41na2l7ogackmif6fj2/apache-maven-3.3.9
    Java version: 1.8.0_121, vendor: Oracle Corporation
    Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre
    Default locale: ja_JP, platform encoding: UTF-8
    OS name: "mac os x", version: "10.12.4", arch: "x86_64", family: "mac"
    
    $ cat pom.xml | grep '<kotlin.version>'
            <kotlin.version>1.1.2-2</kotlin.version>
    $ cat pom.xml | grep '<spek.version>'
            <spek.version>1.1.1</spek.version>
    

    종속성


    pom.xml 의 기술만 신경 쓰면, 나머지는 특히 문제가 되지 않으므로, 거의 여기만으로 이 기사는 끝나 버린다.

    pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    
        <!-- 中略 -->
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <maven.compiler.source>1.6</maven.compiler.source>
            <maven.compiler.target>1.6</maven.compiler.target>
            <java.version>1.6</java.version>
            <kotlin.version>1.1.2-2</kotlin.version>
            <spek.version>1.1.1</spek.version>
            <junit.platform.version>1.0.0-M4</junit.platform.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-stdlib</artifactId>
                <version>${kotlin.version}</version>
            </dependency>
    
            <!-- Testing -->
            <dependency>
                <groupId>org.jetbrains.spek</groupId>
                <artifactId>spek-api</artifactId>
                <version>${spek.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.spek</groupId>
                <artifactId>spek-junit-platform-engine</artifactId>
                <version>${spek.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.junit.platform</groupId>
                <artifactId>junit-platform-runner</artifactId>
                <version>${junit.platform.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
            <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
            <plugins>
                <plugin>
                    <artifactId>kotlin-maven-plugin</artifactId>
                    <groupId>org.jetbrains.kotlin</groupId>
                    <version>${kotlin.version}</version>
                    <executions>
                        <execution>
                            <id>compile</id>
                            <phase>compile</phase>
                            <goals>
                                <goal>compile</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>test-compile</id>
                            <phase>test-compile</phase>
                            <goals>
                                <goal>test-compile</goal>
                            </goals>
                        </execution>
                    </executions>
                    <dependencies>
                        <dependency>
                            <groupId>org.jetbrains.kotlin</groupId>
                            <artifactId>kotlin-maven-allopen</artifactId>
                            <version>${kotlin.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.19</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.junit.platform</groupId>
                            <artifactId>junit-platform-surefire-provider</artifactId>
                            <version>${junit.platform.version}</version>
                        </dependency>
                    </dependencies>
                    <configuration>
                        <includes>
                            <include>**/Test*.java</include>
                            <include>**/*Test.java</include>
                            <include>**/*Tests.java</include>
                            <include>**/*TestCase.java</include>
                            <include>**/Spec*.java</include>
                            <include>**/*Spec.java</include>
                            <include>**/*Specs.java</include>
                        </includes>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    

    이상과 같은 상태로, 의존 관계에 이하를,
  • org.jetbrains.spek:spek-api:1.1.1
  • org.jetbrains.spek:spek-junit-platform-engine:1.1.1
  • org.junit.platform:junit-platform-runner:1.0.0-M4
  • maven-surefire-plugin 의 종속성에 다음을 추가해야 한다.
  • org.junit.platform:junit-platform-surefire-provider:1.0.0-M4

  • 테스트 코드



    테스트 코드를 작성하는 방법은 이전과 거의 변경되지 않았습니다.
    이하, 간단한 예를 열거한다.

    ExampleSpec.kt
    import org.jetbrains.spek.api.Spek
    import org.jetbrains.spek.api.dsl.given
    import org.jetbrains.spek.api.dsl.it
    import org.jetbrains.spek.api.dsl.on
    import org.junit.Assert
    
    object StringBuilderSpec : Spek({
        given("builder") {
            val builder = StringBuilder("Foo")
    
            on("append") {
                builder.append("Bar")
    
                it("should return the result of appending the arg") {
                    Assert.assertEquals("FooBar", builder.toString())
                }
            }
        }
    })
    

    테스트 실행



    테스트 실행에는 Maven이나 Gradle에서 실행하는 방법과 IntelliJ IDEA를 사용하는 경우 IDE에서 실행하는 방법의 두 가지가 있습니다.

    Maven에서 테스트 실행



    평소대로 하면 된다.
    $ ./mvnw clean test -U
    
    ..
    
    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running StringBuilderSpec
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in StringBuilderSpec
    
    Results :
    
    Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
    
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 15.922 s
    [INFO] Finished at: 2017-05-05T11:58:49+09:00
    [INFO] Final Memory: 40M/635M
    [INFO] ------------------------------------------------------------------------
    

    IntelliJ IDEA에서 테스트 실행



    Spek Plugin을 설치하면 Run/Debug Configurations에서 Spek을 선택할 수 있습니다. 설치, 구성은 다음과 같이.
  • IntelliJ IDEA> Preferences ...> Plugins> Browse repositories ...> Spek를 찾아서 설치하고 IntelliJ IDEA를 다시 시작합니다
  • [Run] > [Edit Configurations...] > (대화 상자 왼쪽 상단의 [+] 버튼 또는 ⌘N) > Spek 를 선택
  • 대상 테스트 또는 패키지를 선택하고 확인
  • [Run] > [Run '생성한 테스트 구성 이름'] 또는 ⌃R로 실행







  • 참고



    htp : // spe kf 라메를 rk. 오 rg / cs / st /
    htps : // 기주 b. 코 m / 지 tB 라이언 s / s pek / 이스 s / 195

    좋은 웹페이지 즐겨찾기