我使用Java Servlets创建了一个Web系统,现在想要进行JUnit测试.我dataManager只是将它提交到数据库的基本代码.你会如何使用JUnit测试Servlet?
我的代码示例允许用户注册/注册,这是通过AJAX从我的主页面提交的:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
// Get parameters
String userName = request.getParameter("username");
String password = request.getParameter("password");
String name = request.getParameter("name");
try {
// Load the database driver
Class.forName("com.mysql.jdbc.Driver");
//pass reg details to datamanager
dataManager = new DataManager();
//store result as string
String result = dataManager.register(userName, password, name);
//set response to html + no cache
response.setContentType("text/html");
response.setHeader("Cache-Control", "no-cache");
//send response with register result
response.getWriter().write(result);
} catch(Exception e){
System.out.println("Exception is :" + e); …Run Code Online (Sandbox Code Playgroud) 有许多方法可以使用MockIto初始化模拟对象.这些中最好的方法是什么?
1.
public class SampleBaseTestCase {
@Before public void initMocks() {
MockitoAnnotations.initMocks(this);
}
Run Code Online (Sandbox Code Playgroud)
2.
@RunWith(MockitoJUnitRunner.class)
Run Code Online (Sandbox Code Playgroud)
[编辑] 3.
mock(XXX.class);
Run Code Online (Sandbox Code Playgroud)
建议我,如果有任何其他方法比这些更好......
我有这些价值来自测试
previousTokenValues[1] = "1378994409108"
currentTokenValues[1] = "1378994416509"
Run Code Online (Sandbox Code Playgroud)
我试试
// current timestamp is greater
assertTrue(Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1]));
Run Code Online (Sandbox Code Playgroud)
我得到了调试java.lang.AssertionError和.detailMessagenull
如何断言使用中的条件大于 JUnit
在项目中,在Android Studio中,默认情况下,有两个测试文件夹.
首先是src/androidTest.此文件夹已存在于以前版本的Android Studio中.不过,现在有一个新的测试文件夹,默认情况下src/test,新的依赖,testCompile 'junit: junit: 4.12'在build.gradle.
我用哪个文件夹进行测试?两者有什么不同?
在创建测试和模拟依赖项时,这三种方法之间有什么区别?
@MockBean:
@MockBean
MyService myservice;
Run Code Online (Sandbox Code Playgroud)@嘲笑:
@Mock
MyService myservice;
Run Code Online (Sandbox Code Playgroud)Mockito.mock()
MyService myservice = Mockito.mock(MyService.class);
Run Code Online (Sandbox Code Playgroud)我用jUnit的@BeforeClass注释标记了一个方法,得到了这个例外,说它必须是静态的.理由是什么?这迫使我所有的init都在静态字段上,据我所知,这是没有充分理由的.
在.Net(NUnit)中,情况并非如此.
编辑 - 使用@BeforeClass注释的方法只运行一次与静态方法无关 - 可以使非静态方法只运行一次(如在NUnit中).
在运行junit测试时,eclipse我得到了这个Exception:
java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
Run Code Online (Sandbox Code Playgroud)
我添加了junit.jar库文件.
我试过不同版本的junit.jar的:4.4,4.8等等.
如何修复此异常?
我编写单元测试并希望使用JUnitParamsRunner和MockitoJUnitRunner一个测试类.
不幸的是,以下不起作用:
@RunWith(MockitoJUnitRunner.class)
@RunWith(JUnitParamsRunner.class)
public class DatabaseModelTest {
// some tests
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在一个测试类中同时使用Mockito和JUnitParams?
我用JUnit 5编写了一个简单的测试方法:
public class SimlpeTest {
@Test
@DisplayName("Some description")
void methodName() {
// Testing logic for subject under test
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我跑步时mvn test,我得到了:
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running SimlpeTest
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
Run Code Online (Sandbox Code Playgroud)
不知何故,surefire没有认出那个测试类.我pom.xml看起来像:
<properties>
<java.version>1.8</java.version>
<junit.version>5.0.0-SNAPSHOT</junit.version>
</properties>
<dependencies>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit5-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>snapshots-repo</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases> …Run Code Online (Sandbox Code Playgroud) 我在Eclipse中运行JUnit测试时遇到此错误:
Class not found com.myproject.server.MyTest
java.lang.ClassNotFoundException: com.myproject.server.MyTest
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
Run Code Online (Sandbox Code Playgroud)
我尝试JUnit在类路径中添加库,虽然我正在使用maven,而JUnit库是POM依赖项.
我已经尝试清理项目并使用Eclipse的JUnit插件创建了一个新的JUnit测试用例,但仍然遇到同样的错误.