我正在尝试运行以下代码,并且我得到错误的参数错误。
package Homework7;
import static junitparams.JUnitParamsRunner.$;
import static org.junit.Assert.*;
import junitparams.JUnitParamsRunner;
import junitparams.Parameters;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(JUnitParamsRunner.class)
public class Problem3TestClass {
private Problem3Class p3class;
@SuppressWarnings("unused")
public static final Object[] Problem3TestClass(){
return $(
// Parameters are: (1, 2)
// 1 = x,2 = y
// Test case 1
$(12223,1)
);
}
@Before
public void setUp() {
p3class = new Problem3Class();
}
@Test
@Parameters(method = "Problem3TestClass")
public void test(int[] x,int y)
{
assertEquals(y,p3class.countRepeated(x));
}
}
我的countRepeated方法按以下方式调用
public int countRepeated (int[] x)
我在这里做错了什么?
答案 0 :(得分:1)
根据source
中的评论$ method
由于Java解析的方式,不应该用于创建var-args数组 对象和基元的var-args。
因此,尝试将测试方法更改为接受List of Integer而不是int []。 以下代码应该可以使用。
@SuppressWarnings("unused")
public static final Object[] Problem3TestClass() {
List<Integer> x = new ArrayList<Integer>();
int y = 2;
return $(x, y);
}
@Test
@Parameters(method = "Problem3TestClass")
public void test(List<Integer> x, int y) {
// update countRepeated to accept List<Integer> or do some conversion here
assertEquals(y, p3class.countRepeated(x));
}
答案 1 :(得分:0)
还建议更改为列表类型。但是,有时候测试代码的实现不会改变。要继续使用int [],可以将其保存为最后一个参数。
import pandas as pd
import numpy as np
np.random.seed(100)
df = pd.DataFrame(np.random.randn(5, 3), columns=list('ABC'))
print (df)
def highlight_col(x):
#copy df to new - original data are not changed
df = x.copy()
#set default values to all values
df.loc[:,:] = 'background-color: ""'
#set by condition
if x.iloc[1,1]<x.iloc[1,0]:
df.iloc[1,1] = 'background-color: red'
else:
df.iloc[1,1] = 'background-color: green'
return df
df.style.apply(highlight_col, axis=None)
和测试用例方法:
public static final Object[] Problem3TestClass(){
return $(
$(12223, new int[] {12223}),
$(6, new int[] {1,2,3})
);
}
以下是使用List类型的示例。
@Test
@Parameters(method = "Problem3TestClass")
public void test(int y, int[] x)
{
assertEquals(y, p3class.countRepeated(x));
}
测试用例方法:
public static final Object[] Problem3TestClass2(){
return $(
$(Arrays.asList(1,2,3), 6),
$(Arrays.asList(1,-4), -3)
);
}
附上测试中使用的两种快速模拟方法。
@Test
@Parameters(method = "Problem3TestClass2")
public void test2(List<Integer> x, int y)
{
assertEquals(y, p3class.countRepeated2(x));
}