1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Go】ユニットテスト実行時、ファイルパスがズレるせいでFileNotFoundエラーになる

Last updated at Posted at 2024-03-12

状況

  • ファイルをログ出力に行う
  • テストコードを書いている

問題

  • VSCodeでユニットテストを行うとき、File Not Found エラーによりテストが実行できない

原因

  • テスト時、作業ディレクトリがテストファイルの存在するディレクトリに移動してしまう
  • このため、相対パスで記述したログファイルがNot Foundになってしまう

解決策

  • テスト実行時はログファイルを使わないようにしよう

具体的に

  • go runをする際、環境変数に起動モードのフラグを記述する
  • さらに、本番モードで起動されたときはログファイルを起動しないようにする

コード

  • Bash

        run:
        	MODE="prod" go run $(CMD)
    
        test:
        	MODE="test" go run $(CMD)
    
  • ログファイルを扱うコード

    	if os.Getenv("MODE") == "prod" {
        	file := os.OpenFile()
    		logrus.SetOutput(file)
    	} else {
    		logrus.SetLevel(logrus.DebugLevel)
    	}
    
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?