diff --git a/version.go b/version.go
index <HASH>..<HASH> 100644
--- a/version.go
+++ b/version.go
@@ -207,6 +207,8 @@ func NewVersion(v string) (*Version, error) {
 	return sv, nil
 }
 
+// New creates a new instance of Version with each of the parts passed in as
+// arguments instead of parsing a version string.
 func New(major, minor, patch uint64, pre, metadata string) *Version {
 	v := Version{
 		major:    major,
diff --git a/version_test.go b/version_test.go
index <HASH>..<HASH> 100644
--- a/version_test.go
+++ b/version_test.go
@@ -99,6 +99,22 @@ func TestNewVersion(t *testing.T) {
 	}
 }
 
+func TestNew(t *testing.T) {
+	// v0.1.2
+	v := New(0, 1, 2, "", "")
+
+	if v.String() != "0.1.2" {
+		t.Errorf("expected version 0.1.2 but got %q", v.String())
+	}
+
+	// v1.2.3-alpha.1+foo.bar
+	v = New(1, 2, 3, "alpha.1", "foo.bar")
+
+	if v.String() != "1.2.3-alpha.1+foo.bar" {
+		t.Errorf("expected version 1.2.3-alpha.1+foo.bar but got %q", v.String())
+	}
+}
+
 func TestOriginal(t *testing.T) {
 	tests := []string{
 		"1.2.3",
Added test for New function

Also added doc comment