我有以下测试方法:
MyClass myClass= Mockito.mock(MyClass.class);
Mockito.when(myClass.methodUsedInMethodBeingTested(Matchers.any(MyTypeParam.class))).thenReturn(Collections.<X, Y> emptyMap());
assertNull(myClass.methodToTest(myObject));
Mockito.verify(myClass).methodUsedInMethodBeingTested(Matchers.any(MyTypeParam.class));
Run Code Online (Sandbox Code Playgroud)
这methodUsedInMethodBeingTested是一个我想模拟并返回空地图的方法.但是我收到了失败的消息
想要但没有调用myClass.methodUsedInMethodBeingTested()
.
MyClass
{
public XYZ methodToTest()
{
....
....
Map<X,Y> mp = methodUsedInMethodBeingTested(myTypeParam);
.....
}
public Map<X,Y> methodUsedInMethodBeingTested(MyTypeParam myTypeParam)
{
.....
}
}
Run Code Online (Sandbox Code Playgroud) 我正在编写一个堆栈,一个带有静态节点和其他非静态节点.
public class Stack<E> implements Iterable<E>
{
private int N;
private Node<E> first;
private static class Node<E> // This works fine.
{
private E item;
private Node<E> next;
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使Node非静态时,它会给我这个警告"类型参数E隐藏了类型E"
public class Stack<E> implements Iterable<E>
{
private int N;
private Node<E> first;
private class Node<E> // This shows warning.
{
private E item;
private Node<E> next;
}
}
Run Code Online (Sandbox Code Playgroud)
我告诉我一点理解,因为静态memeber是类的成员所以它不会给我一个警告但是当我使它成为非静态时它属于实例.但这不是一个明确的想法.
我正在使用 Junit 4.8.2。当我@RunWith(MockitoJUnitRunner.class)使用 @Mock运行我的测试类并仅使用 @Mock 注释模拟时,它似乎没有初始化模拟。但是当我使用静态 mock() 并去掉 runner 和 annotations 时,我可以看到 mocks 已初始化。
@RunWith(MockitoJUnitRunner.class)
public class MyTestClass
{
private static final String DOMAIN = "mock";
@Mock private TransactionManager transactionManager;
@Mock private SearchManager searchManager;
private final filter = new Filter(transactionManager,searchManager, DOMAIN);
@Test
public void myTest()
{
filter.callMethod(); // This throws NPE since transactionManager was null
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?我已经研究了这个Initialising mock objects - MockIto并根据它做了一切,但仍然没有运气。
以下是 Cracking the coding interview 中的一个问题:
您有一个包含从 1 到 N 的所有数字的数组,其中 N 最多为 32,000。数组可能有重复的条目,而您不知道 N 是什么。只有 4KB 的内存可用,您将如何打印数组中的所有重复元素?
方法签名是
public static void checkDuplicates(int[] array)
Run Code Online (Sandbox Code Playgroud)
然后解决方案解释了如何使用位向量通过将每个整数表示为一个位来解决这个问题。我的困惑是当我们运行这个方法时,它不会在内存中加载整个数组来循环遍历它吗?现在,如果array大小说,例如,10 亿(许多重复元素)该程序不会失败,因为它将整个数组加载到内存中,而我们拥有的内存是32 * 2^10位?