2016-04-19 11 views
0

Ich habe Probleme beim Schreiben eines Tests mit Spring und JUnit, um ein MongoDB-Repository zu testen. Die Botschaft ist, „konnte nicht autowire. Keine Bohnen ... gefunden Typ“ Mein RepositoryJUnit Test mit Spring und Mongodb: konnte Repository nicht autowire

public interface ProjectRepository extends MongoRepository<Project, String> { 

public Project findByName(String name); 

} 

ist, während meine Konfigurationsdatei

@Configuration 
@EnableMongoRepositories(basePackageClasses = RepositoryPackage.class) 
public class SpringMongoConfiguration extends AbstractMongoConfiguration{ 


@Override 
protected String getDatabaseName() { 
    return "test"; 
} 

@Bean 
public MongoClient mongo() throws Exception { 

    MongoClient client = new MongoClient("localhost"); 
    return client; 
} 

@Bean 
public MongoTemplate mongoTemplate() throws Exception { 
    return new MongoTemplate(mongo(), getDatabaseName()); 
} 

} 

ist, wo RepositoryPackage im selben Paket des Endlagers ist . Mein Test ist

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(classes = SpringMongoConfiguration.class) 
public class MongoDbProjectTests { 

@Autowired 
private ProjectRepository projectRepository; 

@Before 
public void init(){ 

    projectRepository.deleteAll(); 
    Project project = new Project("sdfjklgh", 1, "comunione Leonardo", 
      Project.TYPE_PROJECT_PHOTO, Project.STATE_PROJECT_DRAFT); 

    projectRepository.save(project); 
} 

@Test 
public void test1(){ 
    List<Project> list = projectRepository.findAll(); 
    assertEquals(1, list.size()); 
} 

} 

, was mache ich falsch?

Antwort

0

Ich habe ein Projekt erstellt und Ihre Dateien kopiert, und es funktioniert für mich.

Die einzige Ursache, die ich denke, ist, dass Ihre ProjectRepository Klasse nicht im selben Paket wie Ihre RepositoryPackage Klasse ist, die Sie als basePackageClasses Attribut für die Komponentenabtastung angeben. (Es sollte auch in Ordnung sein, wenn ProjectRepository in einem Paket in der Verpackung ist, die RepositoryPackage in ist.)

ich das Projekt GitHub veröffentlicht haben, aber es nutzt Gradle statt Maven.

Und jetzt another one, diesmal mit Maven.

+0

Können Sie Ihre pom.xml teilen? –