![](/img/trans.png)
[英]Using apache commons csv: I'm trying to remove a set of records from a List<CSVRecord> but it's not removing all of them/
[英]Mocking an Apache Commons CSV CSVRecord
在某些时候,我的代码需要接触一个CSVRecord,而我无法想出一种方法来创建它的模拟版本。
这门课是最终的,所以它不能被嘲笑。 构造函数是私有的,所以我无法创建它的实例。 一种方法如何测试使用CSVRecord
类的代码?
现在唯一有效的解决方案是解析测试夹具以获取对象的实例。 这是我最好的方法吗?
您可以使用 Powermock。 更多信息: https : //github.com/powermock/powermock/wiki/mockfinal
例子:
import org.apache.commons.csv.CSVRecord;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest({CSVRecord.class}) // needed to mock final classes and static methods
public class YourTestClass {
@Test
public void testCheckValidNum_null() {
String columnName = "colName";
CSVRecord record = mock(CSVRecord.class);
String contentsOfCol = "hello";
String result;
when(record.get(columnName)).thenReturn(contentsOfCol);
result = record.get(columnName);
assertEquals(contentsOfCol, result);
}
}
这是我的 maven 包含(有更新版本的库,这正是我正在使用的):
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.7.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.7.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.8.5</version>
<scope>test</scope>
</dependency>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.