I am using Junit5, and my IDE (IntelijIdea) is not recognize Assumptions. I am actually do not know why, but may be there is some dependecy on Maven I do not connect into project. Below I will show you the sample of my code.
This is my Assumptions import.
import org.junit.jupiter.api.Assumptions;
And this is wrong code (I can not compile it, compiler does not know what is assumeTrue() )
#Test
#EnabledOnOs(OS.MAC)
void testInsertion() {
assumeTrue(isServerUp); //That place is crashing
assertThrows(NullPointerException.class, () -> Connection.insertTheInstance(person),
"");
If you are familiar with this case then, please, share you knowledge) Many thanks!
It's a import problem probably. Try:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.6.2</version>
<scope>test</scope>
</dependency>
Check if maven import is ok
Close your project in intellij
Delete your .m2 folder in your HOME directory (user/yourusername in windows, /home in linux)
Execute in a terminal in your project: mvn dependency:purge-local-repository clean.
Open your project again
If it's not ok yet, try the junit 4.12. Its have Assumptions too.
assumeTrue method is part of JUnit 4, but you can also use it in JUnit 5 through the
org.junit.jupiter.api.Assumptions class.
For intelliJ - Junit5 combination, make sure to import the following in your class:
import static org.junit.jupiter.api.Assumptions.assumeTrue;
Related
Problem is that - I have a program that builds and runs fine. It is written in Scala and it uses the Kafka Streams DSL. I was to use the new kafka-streams-scala package and I am using Maven right now. I can't use SBT right now. When I add the dependency
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams-scala_2.11</artifactId>
<version>2.0.0</version>
</dependency>
I then get all kinds of errors in the code, that already runs. I can't even do the following import statement
import scala.collection.JavaConverters._.
When I do, I get the following error
object language is not a member of package org.apache.kafka.streams.scala.
Why is this happeneing and how can I fix it?
I needed to prefix _root_ to all the Scala core packages like for example
import _root_.scala.collection.JavaConverters._
I am trying to understand what I am doing wrong with junit-tests in Maven with eclipse. Mainly I have been just following this "getting started guide" for Maven:
https://spring.io/guides/gs/maven/
But for me it is not completely working like that when it comes to junit.
To follow the exact folder-structure from the example I have named my packages under src in eclipse:
main.java.hello
test.java.hello
My test class GreeterTest.java is in the package test.java.hello and has this content:
package test.java.hello;
import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.*;
import org.junit.Test;
import main.java.hello.Greeter;
public class GreeterTest {
private Greeter greeter = new Greeter();
#Test
public void greeterSaysHello() {
assertThat(greeter.sayHello(), containsString("Hello"));
}
}
In my pom.xml you find the dependency:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
Unfortunately eclipse sais "the import org.junit cannot be resolved."
If change the scope of the dependency from test to compile I do not get this error message, but that would be not the way how the scope is intended to be used, is it?
What do I need to change that also eclipse understands, that this class is a test-class and therefore all dependencies are actually available?
Best,Nils
The issue appears to be related to where Eclipse thinks your source tree starts. You have put your code in src/main/java/hello and src/main/test/hello but Eclipse thinks the source tree starts at src. So it thinks the other folders are packages and has given your classes package names like main.java.hello.Greeter.
The quickest way to fix this is to run on the command line:
mvn eclipse:eclipse
which uses maven to fix your eclipse projects. It will automatically set the source root to be the correct values. When it completes, right click on the project and select Refresh to see the updated project.
To fix this manually, you can right click on the project and choose Build Path > Configure Build Path and, in the Source tab on the right, ensure that the entire src/main/java (right up to java!) is included as the source folder. Do this by clicking Add Folder and selecting java in the tree under src - main. Do the same for src/main/test. Usually maven projects include src/main/resources as a source folder too.
Sometimes there is a need to quickly test some expression's output. It would be convenient to execute selected fragment and see the result instantly in System.out without running project's main() method.
Is there some workaround for IntelliJ to provide this feature?
The easiest way is just to stop a debug before what you are trying to test, press ALT + F8 and execute the expression on the window that appears.
You are going to have access to everything declared to that point, so you can execute anything without changing the state of your code.
Use a test framework like JUnit.
If its maven, add a dependency to your pom.xml:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
Then, alongside to your project/src/main/java/mypkg/MyClass.java, add a new path: src/test/java/mypkg/MyClassTest.java
Inside add a function, call it whatever you like.
Add #Test annotation to it, and right-click to execute it.
#Test
public void testA() {
...
}
JUnit is very good practice to your java development applications, as you can test your code carefully and also run small fragments of code quickly. The bonus is that you have your classes and all your deps in your tests to quickly use them as well
I have a project called "untitled" where I copy-paste the code into and run it there. I have classes which have this template setup already.
Another approach is to debug your code and "evaluate expression". You can give it any snippet of code. ie. it doesn't even have to be a statement.
I'm trying to write JUnit4 tests for my web app, and they had been working fine previously. However, now when I try to run the tests by right clicking the class file -> Run As -> JUnit Test I don't see that option. I think it could be because a colleague committed some Eclipse settings/property files on accident that messed with mine. I'm using Eclipse Helios on a Mac running 10.6.X.
I noticed that the icons on the test classes changed from the "filled" J to a "bubble" J and I'm not sure if that is signifying some kind of problem:
I've double checked and made sure that JUnit4 is on my Build Path, and I've gone to the Eclipse -> Preferences -> JUnit pane and verified there are JUnit4 imports being used.
My test classes look like this:
#RunWith(SpringJUnit4ClassRunner.class)
#ContextConfiguration( { "classpath*:/resources/action-test-appconfig.xml" })
#Transactional
public class UserControllerTest extends BaseStrutsTestCase<UserController> {
/**
* Tests the ability of a user to change their login username
* #throws Exception
*/
#Test
public void testChangeLogin() throws Exception {
Any thoughts and suggestions are appreciated.
The problem is with the way you are trying to access and run java files in eclipse. You should be observing this empty 'J' icons on your java files. It is a classpath problem, when you click, you are actually accessing the file from the classpath.
To view the Java file, you have to add a reference to your project in the classpath and move it to the top of the classpath list.
Once you do that, then you should be able to run your junits.
I had the same issue, and I restarted eclipse and got "Run as JUnit test" back.
Looks like a bug in eclipse.
That kind of J icon filled to a "bubble" means that Eclipse doesn't recognize your project as a Java project, and therefore doesn't provide Java options such as Run as JUnit.
Try reimporting the project as a Java Project.
Try adding following dependency in the pom.xml of your project in which the test case is located:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.test</artifactId>
<version>3.1.1.RELEASE</version>
<scope>test</scope>
</dependency>
I need to solve a Java problem for an interview, and they have sent me the test class. It starts with
import org.junit.Before;
and also has the following syntax at places:
#RunWith(JUnit4.class)
...
#Before
...
#Test
I haven't used Java for a while, so this confuses me a little. I downloaded eclipse and when I tried to compile this test file, there are errors at the import and at the '#' signs. The import error throws:
The import org.junit cannot be resolved.
And the #RunWith is not even recognized, as it tries to resolve it to a type.
You need to add JUnit library to the classpath of your project. There are several choices to achieve it depending on your development setup.
Command line: In the case of command-line invocations, you will have to add junit.jar to the classpath of your application with java -cp /path/to/junit.jar. Take a look at the answers here.
Using eclipse: Eclipse distributions are bundled with this library and this is how you can use it for your project. Right-click on the eclipse project and navigate:
Properties -> Java Build Path -> Libraries -> Add Library -> JUnit ->
JUnit 3/4
In the scenarios where you want to use a different version of the jar, instead of clicking on Add Library above, you should click on Add External Jar and locate the library on the file system.
Right-click on the eclipse project and navigate to
Properties -> Java Build Path -> Libraries -> Add Library -> JUnit ->
JUnit 3/4
It works for me.
If you use maven and this piece of code is located in the main folder, try relocating it to the test folder.
If you are using eclipse and working on a maven project, then also the above steps work.
Right-click on your root folder.
Properties -> Java Build Path -> Libraries -> Add Library -> JUnit -> Junit 3/4
Step By Step Instructions here
you need to add Junit dependency in pom.xml file, it means you need to update with latest version.
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
You can easily search for a line like #Test and then use the quick-fix add JUnit 4 library to the build path at this line. I think this is faster than adding JUnit manually to the project.
In starting code line copy past 'Junit' or 'TestNG' elements will show with Error till you import library with the Project File.
To import Libraries in to project:
Right Click on the Project --> Properties --> Java Build Path --> Libraries -> Add Library -> 'Junit' or 'TestNG'
If you are using Java 9 or above you may need to require the junit dependency in your module-info.java
module myModule {
requires junit;
}
If using Maven you can context click and run 'Maven/Update Project...'
Seems that the JUnit .jar file is not in the path. Also, make sure you are using JDK1.5 or above.
In case you want to create your own Test Class. In Eclipse go to File -> New -> J Unit Test Case. You can then choose all your paths and testing class setup within the wizard pop-up.
When you add TestNG to your Maven dependencies , Change scope from test to compile.Hope this would solve your issue..
I had the same problem right now. My solution: add JUnit to the pom.xml AND remove JUnit from the eclipse project properties (Java Build Path/Libraries).
If you use Maven with Eclipse then You need to follow the below steps.
1). Add Junit dependency to the pom.xml file
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
Note : Please get the latest from the following link
https://mvnrepository.com/artifact/junit/junit
2).On your test class (Ex. AdditionTest.class), you need to annotate with #Test on your test method (Ex. testAdd() )
Note : The Test annotation tells JUnit that the public void method to which it is attached can be run as a test case.
public class AdditionTest {
#Test
public void testAdd()
{
// Test code here...
}
The moment/ the first time you annotate as "#Test" the IDE asks whether you need to Add Junit jar files to Class path. Once you accept this it will add the Junit jar file into the class path.
With this you can achieve the following imports
import org.junit.Test;
import static org.junit.Assert.*;
Regards
Update to latest JUnit version in pom.xml. It works for me.