我有一节课.
Class First {
private Second second;
public First(int num, String str) {
second = new Second(str);
this.num = num;
}
... // some other methods
}
Run Code Online (Sandbox Code Playgroud)
我想为First类的公共方法编写单元测试.我想避免执行类Second的构造函数.
我这样做了:
Second second = Mockito.mock(Second.class);
Mockito.when(new Second(any(String.class))).thenReturn(null);
First first = new First(null, null);
Run Code Online (Sandbox Code Playgroud)
它仍在调用类Second的构造函数.我怎么能避免呢?
在eclipse中的一个项目中的src目录中创建一个文件夹时,它会使该文件夹成为一个包.有没有办法避免这个文件夹自动成为一个包?例如,我在src目录中添加主文件夹.我不希望它成为一个包.我怎样才能做到这一点?
假设我以这种方式添加文件夹:src/main/org/apache.我不希望main.org.apache成为一个包,而是希望包装从org开始.(即org.apache).
我正在使用maven-jetty-plugin和maven-failsafe-plugin运行集成测试.这是我的配置:
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.7.1</version>
<executions>
<execution>
<id>integration-test</id>
<goals>
<goal>integration-test</goal>
</goals>
</execution>
<execution>
<id>verify</id>
<goals>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8080</port>
<maxIdleTime>3600000</maxIdleTime>
</connector>
</connectors>
<contextPath>/</contextPath>
<scanIntervalSeconds>3</scanIntervalSeconds>
<scanTargetPatterns>
<scanTargetPattern>
<directory>src/main/webapp/WEB-INF</directory>
<excludes>
<exclude>**/*.jsp</exclude>
<exclude>**/*.html</exclude>
</excludes>
<includes>
<include>**/*.page</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</scanTargetPattern>
</scanTargetPatterns>
</configuration>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run-war</goal>
</goals>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<daemon>true</daemon>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
当我运行mvn clean install时,jetty服务器启动,之后没有任何反应(它卡住).我的日志中的最后一行是:[INFO]启动了Jetty Server.当我按下control-c时,这是它打印的内容:
2013-04-25 15:24:16.315:INFO::Shutdown hook executing
2013-04-25 …Run Code Online (Sandbox Code Playgroud) lsof似乎对我有重复的条目.
1:fs:java 19644 4961 abc mem REG 252,1 126331 118159613 abc.jar
1:fs:java 19644 4962 abc mem REG 252,1 126331 118159613 abc.jar
Run Code Online (Sandbox Code Playgroud)
lsof格式是:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Run Code Online (Sandbox Code Playgroud)
19644是PID.abc是USER.什么是4961和4962?为什么我们有100个这样的.所有这些之间的区别仅在于第3栏4961,4962等等?
通常,欢迎文件列表用于显示应用程序的第一页.如果在我的web.xml中没有欢迎文件列表,该怎么办?在这种情况下,哪个文件将显示为我的应用程序的主页?我在web.xml中只有几个过滤器?
使用mockito模拟方法可以确保永远不会调用mocked方法吗?我有Main类,其中包含一些我想编写单元测试的代码,我有一个单元测试类MainTest,它包含Main类的单元测试.
例如:
来源类:
package abc;
public class Main {
public int check1() {
int num = 10;
num = modify(num);
return num;
}
public int modify(int num) {
if (num % 10 == 0) return num / 10;
return -1;
}
}
Run Code Online (Sandbox Code Playgroud)
Junit测试(使用mockito)
package abc;
import junit.framework.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.mockito.Mockito;
public class MainTest {
private static Main main;
@BeforeClass
public static void setUp() {
main = Mockito.mock(Main.class);
Mockito.when(main.modify(10)).thenReturn(5);
}
@Test
public void testCheck1() {
Test1 main1 = …Run Code Online (Sandbox Code Playgroud)