peer
peer

Reputation: 4699

TempDir is null

I want to copy some files into a temporary directory. But the File I annotate with @TempDir does not seem to get injected.

import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;

import java.io.File;

public class MyTempFileTest {

    @TempDir
    public File tempFolder;
    
    @Test
    public void testTempFolder() {
        Assertions.assertNotNull(tempFolder); 
    }
 }

the result is org.opentest4j.AssertionFailedError: expected: not <null>

I would instead expect it to be a random temporary directory, as was the case with @Rule TemporaryFolder tmpSudokus = new TemporaryFolder() in Junit4.

And according to the docs I can annotate a Java.io.File.

If I try to pass the tempDir as a directory

    @Test
    public void testTempFolderParam(@TempDir File tempFolder) {
        Assertions.assertNotNull(tempFolder);
    }

I get org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter [java.io.File tempFolder] in executable [public void my.package.MyTempFileTest.testTempFolderParam(java.io.File)].

The test is part of an android project, my dependencies are:

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.2'
    testImplementation 'org.junit.jupiter:junit-jupiter-params:5.7.2'
}

Upvotes: 6

Views: 1671

Answers (1)

S_intg
S_intg

Reputation: 332

According to documentation Junit5 Docs

The temporary directory is only created if a field in a test class or a parameter in a lifecycle method or test method is annotated with @TempDir. If the field type or parameter type is neither Path nor File or if the temporary directory cannot be created, an ExtensionConfigurationException or a ParameterResolutionException will be thrown as appropriate. In addition, a ParameterResolutionException will be thrown for a constructor parameter annotated with @TempDir.

As I see in your example, you did use java.io.File so I guess your problem is in the creation part of the temporary folder.

I copied your example and it did work, the tempDir was not null

enter image description here

Dependencies :

  • junit-jupiter:5.7.2
  • junit-jupiter-engine:5.7.2
  • junit-jupiter-params:5.7.2

Upvotes: 2

Related Questions