golang 개발 시작~설치, 운행, 초보 테스트~

7082 단어 Go

TL;DR

  • go에서 개발 준비 및 테스트 절차 소개
  • 구체적인 내용은 다음과 같다.
  • go설치
  • 프로그램의 실행, 2진 제작
  • 테스트 실행, 시각적 덮어쓰기 보고서
  • golang 설치

  • 아래 절차입니다. go의 버전과 체계 구조(amd64)는 go 언어 다운로드 페이지에서 확인하십시오.

  • go 언어 다운로드 페이지에서 OS 기반 파일 다운로드
  • /usr/local/go전개(Windows의 경우C:\go등, 적당한 곳에서도 가능)
  • 환경 변수 설정
  • Windows의 경우 zip 파일을 다운로드하여 적절한 위치로 확장하고 환경 변수PathGOPATH를 설정하면 명령 프롬프트에서 실행할 수 있음
  • # OSXの場合
    wget https://dl.google.com/go/go1.12.5.darwin-amd64.tar.gz
    sudo tar xzvf go1.12.5.darwin-amd64.tar.gz -C /usr/local
    # Linuxの場合
    wget https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz
    sudo tar xzvf go1.12.5.linux-amd64.tar.gz -C /usr/local
    
    # 両者共通
    export GOPATH=~/.go
    export PATH=/usr/local/go/bin:${GOPATH}:${PATH}
    
    # goが実行できることを確認
    which go
    /usr/local/go/bin/go
    
    go version
    go version go1.12.5 darwin/amd64 # インストールした環境によって表示が異なる
    

    예제 프로그램 만들기 및 실행


    main.go 만들기

  • 테스트용 간단한 프로그램을 만들어 실행
  • 아래와 같이main.go 만들기
  • /*
    Sample Program main.go
    */
    package main
    
    import(
        "fmt"
    )
    
    func HelloWorld() {
        fmt.Println("Hello go World!") // 文字列を出力する
    }
    
    func main(){
        HelloWorld() // メソッドHelloWorldをコールする
    }
    

    실행

  • go run 명령, 실행 가능 프로그램
  • go run main.go
    Hello go World!
    

    구축 및 바이너리 실행

  • go build 명령, 실행 바이너리 파일 만들기
  • 아래의 예에서 main_bin라는 실행 2진법
  • go build -o main_bin main.go
    ./test
    
  • 바이너리 파일을 실행하는 파일 크기가 자주 커지기 때문에 upx 명령으로 실행 파일을 압축하는 것이 좋다
  • Mac OSX는 homebrew, Linux는 yum, apt-get 등, 패키지 관리 시스템에 설치 가능
  • 바이너리main_bin를 실행하는 파일의 크기는 절반 정도입니다.
  • $ go build -o main_bin main.go
    $ ls -l main_bin
    2103928  5  9 12:40 main_bin*
    
    $ upx main_bin
    ...<snip>...
    Ultimate Packer for eXecutables
            File size         Ratio      Format      Name
       --------------------   ------   -----------   -----------
       2103928 ->   1073168   51.01%   macho/amd64   test
    ...<snip>...
    $ ls -l main_bin
    1073168  5  9 12:40 main_bin*
    

    테스트 작성

  • go는 프로그램 테스트를 작성할 수 있다
  • 테스트란 각종 조건하에서 집행하는 방법, 오류를 발견하고 코드 수정의 영향을 확인하는 구조
  • main.go의 테스트용 프로그램으로서 다음mainu를 사용할 수 있습니다test.go 만들기
  • パッケージ名_test.go처럼 파일 이름의 끝에 _test를 붙여도 소프트웨어 패키지의 테스트를 기술할 수 있다
  • /*
    Sample Program Unit Test for main.go
    */
    package main
    
    import(
        "testing"
    )
    
    // TestMain: 各テストを実行する前後に処理をしたい場合は,Runメソッドの前後に記述する
    func TestMain(m *testing.M) {
        m.Run()
    }
    
    // TestHelloWorld: HelloWorldを実行する関数
    func TestHelloWorld(t *testing.T){ // 個別のテスト用メソッド
        HelloWorld()
    }
    

    테스트 실행

  • go test 명령, 테스트 가능
  • -v 상세 로그 출력 옵션
  • -cover 에서 코드 덮어쓰기를 얻을 수 있습니다 (실행 중인 코드 줄의 백분율 테스트)
  • 이 프로그램의 경우main.Go 파일의 HelloWorld 함수만 실행하기 때문에 전체의 50%만 실행합니다
  • HelloWorld 방법은 매개 변수도 반환 값도 없기 때문에 실행 방법의 정도를 시험해 봐야 테스트의 의미가 있지만 매개 변수를 여러 번 지정하여 실행할 수도 있고 반환 값의 기대치에 따라 처리할 수도 있다
  • # ディレクトリ内のすべてをテスト対象にする場合は, ```go test -v -cover .```でよい
    go test main_test.go main.go -v -cover
    === RUN   TestHelloWorld
    Hello go World!
    --- PASS: TestHelloWorld (0.00s)
    PASS
    coverage: 50.0% of statements
    ok      command-line-arguments  0.006s  coverage: 50.0% of statements
    

    덮어쓰기 보고서 작성

  • 다음 절차를 통해 가시화 코드 덮어쓰기 가능
  • 테스트를 수행할 때 덮어쓰기 프로필을 만들기 위해 -coverprofile 추가
  • go tool cover 명령 제작cover.out을 html
  • 로 변환
    # カバレッジプロファイル出力付きでテストを実行する
    go test main_test.go main.go -v -cover -coverprofile=./cover.out
    go tool cover -html=cover.out -o cover.html
    
  • 생성된 커버.html를 보면 프로그램 코드에서 테스트를 통과한 범위를 확인할 수 있습니다

  • 참고 자료

  • go 언어 다운로드 페이지
  • 좋은 웹페이지 즐겨찾기