1

I am experiencing a strange behavior into a Spring application.

I am trying to create a JUnit test class like this:

public class AppTest {

@Before
public void setUp() {
    // Create the application from the configuration
    ApplicationContext context = new AnnotationConfigApplicationContext( ApplicationConfig.class )
    // Look up the application service interface
    service = (TransferService) context.getBean(TransferService.class);
    }

}

The main problem is that I obtain an error on the @Before annotation on the setUp() method. It say to me that: Before cannot be resolved to a type

It seems as it can't find the dependency for the @Before annotation.

This is the dependency that I have in my pom.xml file:

<properties>
    <org.springframework.version>3.2.16.RELEASE</org.springframework.version>
</properties>


<dependencies>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>${org.springframework.version}</version>
    </dependency>

    <!-- Bean Factory and JavaBeans utilities (depends on spring-core) Define 
        this if you use Spring Bean APIs (org.springframework.beans.*) -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>${org.springframework.version}</version>
    </dependency>


    <!-- Core utilities used by other modules. Define this if you use Spring 
        Utility APIs (org.springframework.core.*/org.springframework.util.*) -->

    <!-- Aspect Oriented Programming (AOP) Framework (depends on spring-core, 
        spring-beans) Define this if you use Spring AOP APIs (org.springframework.aop.*) -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${org.springframework.version}</version>
    </dependency>

    <!-- Application Context (depends on spring-core, spring-expression, spring-aop, 
        spring-beans) This is the central artifact for Spring's Dependency Injection 
        Container and is generally always defined -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${org.springframework.version}</version>
    </dependency>

    <!-- Various Application Context utilities, including EhCache, JavaMail, 
        Quartz, and Freemarker integration Define this if you need any of these integrations -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${org.springframework.version}</version>
    </dependency>

    <!-- Transaction Management Abstraction (depends on spring-core, spring-beans, 
        spring-aop, spring-context) Define this if you use Spring Transactions or 
        DAO Exception Hierarchy (org.springframework.transaction.*/org.springframework.dao.*) -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>${org.springframework.version}</version>
    </dependency>

    <!-- JDBC Data Access Library (depends on spring-core, spring-beans, spring-context, 
        spring-tx) Define this if you use Spring's JdbcTemplate API (org.springframework.jdbc.*) -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${org.springframework.version}</version>
    </dependency>

    <!--  
    <dependency>
        <groupId>FTP-MANAGER</groupId>
        <artifactId>FTP-MANAGER</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    -->

    <dependency>
        <groupId>javax.mail</groupId>
        <artifactId>mail</artifactId>
        <version>1.4</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.16</version>
    </dependency>

    <!-- JDBC 3.0 driver for Microsoft SQL Server and Sybase -->
    <dependency>
        <groupId>net.sourceforge.jtds</groupId>
        <artifactId>jtds</artifactId>
        <version>1.2.4</version>
    </dependency>

    <!-- Contiene la classe BasicDataSource -->
    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.4</version>
    </dependency>   
</dependencies>

What am I missing? What is wrong? How can I fix this issue?

Idos
  • 15,053
  • 14
  • 60
  • 75
AndreaNobili
  • 40,955
  • 107
  • 324
  • 596
  • 1
    You got the import statement? You know, in the end any annotation is just a java class; so you need to things to make them work: 1) a jar/class file and 2) an import statement in your own code – GhostCat Jul 06 '16 at 12:50
  • try a ctrl+shift+O (windows) or cmd+shift+O (mac) to organize imports (on eclipse or STS) – ddb Jul 06 '16 at 12:51
  • I can't import this specific statment. It say to me to "create annotation Before", so it means that I have not into mu dependency – AndreaNobili Jul 06 '16 at 12:51
  • @ddb Be careful - not everybody is using eclipse. Or can you guarantee that your keystrokes organize imports for any IDE, editor? – GhostCat Jul 06 '16 at 12:51
  • I gave you the two things that have that need to be there. You figure which one gives you grieve ... – GhostCat Jul 06 '16 at 12:52

1 Answers1

6

@Before is available from junit 4.x, Change to newer Version of Junit.

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
</dependency>
Jens
  • 67,715
  • 15
  • 98
  • 113