diff --git a/lib/Test/KorAP/XML/TEI.pm b/lib/Test/KorAP/XML/TEI.pm
new file mode 100644
index 0000000..e94c8bb
--- /dev/null
+++ b/lib/Test/KorAP/XML/TEI.pm
@@ -0,0 +1,25 @@
+package Test::KorAP::XML::TEI;
+use strict;
+use warnings;
+use File::Temp qw/tempfile/;
+use Exporter 'import';
+
+our @EXPORT_OK = qw(korap_tempfile);
+
+# Create a temporary file and file handle
+# That will stay intact, if KORAPXMLTEI_DONTUNLINK is set to true.
+sub korap_tempfile {
+  my $pattern = shift;
+  $pattern .= '_' if $pattern;
+
+  # default: remove temp. file created by func. tempfile
+  #  to keep temp. files use e.g. 'KORAPXMLTEI_DONTUNLINK=1 prove -lr t/script.t'
+  return tempfile(
+    'KorAP-XML-TEI_' . ($pattern // '') . 'XXXXXXXXXX',
+    SUFFIX => '.tmp',
+    TMPDIR => 1,
+    UNLINK => $ENV{KORAPXMLTEI_DONTUNLINK} ? 0 : 1
+  )
+};
+
+1;
diff --git a/t/script.t b/t/script.t
index 401d76b..8d17be6 100644
--- a/t/script.t
+++ b/t/script.t
@@ -2,18 +2,12 @@
 use warnings;
 use File::Basename 'dirname';
 use File::Spec::Functions qw/catfile/;
-use File::Temp qw/tempfile/;
 use IO::Uncompress::Unzip qw(unzip $UnzipError);
 
 use Test::More;
 use Test::Output;
-
 use Test::XML::Loy;
-
-our %ENV;
-# default: remove temp. file created by func. tempfile
-#  to keep temp. files use e.g. 'KORAPXMLTEI_DONTUNLINK=1 prove -lr t/script.t'
-my $_UNLINK = $ENV{KORAPXMLTEI_DONTUNLINK}?0:1;
+use Test::KorAP::XML::TEI qw!korap_tempfile!;
 
 my $f = dirname(__FILE__);
 my $script = catfile($f, '..', 'script', 'tei2korapxml');
@@ -35,7 +29,7 @@
 # Load example file
 my $file = catfile($f, 'data', 'goe_sample.i5.xml');
 
-my ($fh, $outzip) = tempfile("KorAP-XML-TEI_script_XXXXXXXXXX", SUFFIX => ".tmp", TMPDIR => 1, UNLINK => $_UNLINK);
+my ($fh, $outzip) = korap_tempfile('script_out');
 
 # Generate zip file (unportable!)
 stderr_like(
@@ -183,7 +177,7 @@
 # Tokenize with external tokenizer
 my $cmd = catfile($f, 'cmd', 'tokenizer.pl');
 
-my ($fh2, $outzip2) = tempfile("KorAP-XML-TEI_script_XXXXXXXXXX", SUFFIX => ".tmp", TMPDIR => 1, UNLINK => $_UNLINK);
+my ($fh2, $outzip2) = korap_tempfile('script_out2');
 
 stderr_like(
   sub { `cat '$file' | perl '$script' --tc='perl $cmd' > '$outzip2'` },
@@ -218,7 +212,7 @@
 # TODO: call $script with approp. parameter for internal tokenization (actual: '$_GEN_TOK_INT = 1' hardcoded)
 
 
-my ($fh3, $outzip3) = tempfile("KorAP-XML-TEI_script_XXXXXXXXXX", SUFFIX => ".tmp", TMPDIR => 1, UNLINK => $_UNLINK);
+my ($fh3, $outzip3) = korap_tempfile('script_out3');
 
 
 # ~ test conservative tokenization ~
diff --git a/t/tei.t b/t/tei.t
index b602df6..53f372e 100644
--- a/t/tei.t
+++ b/t/tei.t
@@ -1,21 +1,16 @@
 use strict;
 use warnings;
 use Test::More;
-use File::Temp 'tempfile';
+use Test::KorAP::XML::TEI qw!korap_tempfile!;
 
 use FindBin;
 BEGIN {
   unshift @INC, "$FindBin::Bin/../lib";
 };
 
-our %ENV;
-# default: remove temp. file created by func. tempfile
-#  to keep temp. files use e.g. 'KORAPXMLTEI_DONTUNLINK=1 prove -lr t/script.t'
-my $_UNLINK = $ENV{KORAPXMLTEI_DONTUNLINK}?0:1;
-
 use_ok('KorAP::XML::TEI', 'remove_xml_comments');
 
-my ($fh, $filename) = tempfile("KorAP-XML-TEI_tei_XXXXXXXXXX", SUFFIX => ".tmp", TMPDIR => 1, UNLINK => $_UNLINK);
+my ($fh, $filename) = korap_tempfile('tei');
 
 print $fh <<'HTML';
 mehrzeiliger
diff --git a/t/test.t b/t/test.t
new file mode 100644
index 0000000..5b6fbe1
--- /dev/null
+++ b/t/test.t
@@ -0,0 +1,26 @@
+use strict;
+use warnings;
+use Test::More;
+
+use FindBin;
+BEGIN {
+  unshift @INC, "$FindBin::Bin/../lib";
+};
+
+use_ok('Test::KorAP::XML::TEI','korap_tempfile');
+
+my ($fh, $filename) = korap_tempfile('test');
+ok($fh, 'Filehandle created');
+ok($filename, 'Filename returned');
+close($fh);
+
+like($filename, qr!KorAP-XML-TEI_test_.+?\.tmp$!, 'Filename pattern');
+
+($fh, $filename) = korap_tempfile();
+ok($fh, 'Filehandle created');
+ok($filename, 'Filename returned');
+close($fh);
+
+like($filename, qr!KorAP-XML-TEI_.+?\.tmp$!, 'Filename pattern');
+
+done_testing;
diff --git a/t/zipper.t b/t/zipper.t
index 6147f62..2ee7fab 100644
--- a/t/zipper.t
+++ b/t/zipper.t
@@ -2,7 +2,7 @@
 use warnings;
 use Test::More;
 use File::Spec::Functions qw/catfile/;
-use File::Temp qw/tempfile/;
+use Test::KorAP::XML::TEI qw!korap_tempfile!;
 use IO::Uncompress::Unzip;
 
 use FindBin;
@@ -10,15 +10,10 @@
   unshift @INC, "$FindBin::Bin/../lib";
 };
 
-our %ENV;
-# default: remove temp. file created by func. tempfile
-#  to keep temp. files use e.g. 'KORAPXMLTEI_DONTUNLINK=1 prove -lr t/script.t'
-my $_UNLINK = $ENV{KORAPXMLTEI_DONTUNLINK}?0:1;
-
 require_ok('KorAP::XML::TEI::Zipper');
 
 my $data;
-my ($fh, $outzip) = tempfile("KorAP-XML-TEI_zipper_XXXXXXXXXX", SUFFIX => ".tmp", TMPDIR => 1, UNLINK => $_UNLINK);
+my ($fh, $outzip) = korap_tempfile('zipper');
 
 my $zip = KorAP::XML::TEI::Zipper->new($outzip);
 $fh->close;
