title: Golang: Testing with init() func
body: <p>Hi I am new to Go and I am writing a simple app which gets some configuration from the env variables. I do this in the init function as shown below.</p>
  
  <pre><code>type envVars struct {
      Host     string `env:"APP_HOST"`
      Username string `env:"APP_USERNAME"`
      Password string `env:"APP_PASSWORD"`
  }
  
  var envConfig envVars
  
  func init() {
      if err := env.Parse(&amp;envConfig); err != nil {
          log.Fatal(err)
      }
  }
  </code></pre>
  
  <p>I wrote test to verify of the env variables are being read correctly. But the problem is that my program's init func gets called even before my test's init func. Is there any way I can do some sort of setup before my program's init func gets called.</p>
  
  <pre><code>func init() {
      os.Setenv("APP_HOST", "http://localhost:9999")
      os.Setenv("APP_USERNAME", "john")
      os.Setenv("APP_PASSWORD", "doe")
  }
  
  func TestEnvConfig(t *testing.T) {
      assert.NotNil(t, envConfig)
      assert.Equal(t, "http://localhost:9999", envConfig.Host)
  }
  </code></pre>