标签: parameterized

将数组传递给Parameterized JUnit

我是JUnit 4.x的参数化功能的新手并且遇到了问题.我的参数化测试由3个整数数组组成,我很难如何声明它们.我在下面得到的运行时错误:

testGeneral[0] caused an ERROR: argument type mismatch
    argument type mismatch
    java.lang.IllegalArgumentException
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
testGeneral[1] caused an ERROR: argument type mismatch
    argument type mismatch
    java.lang.IllegalArgumentException
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

@RunWith(Parameterized.class)
public class MyArrayTest {
    private Integer[] inputList1;
    private Integer[] inputList2;
    private Integer[] expectedList;

    public MyArrayTest(Integer[] li1, Integer[] li2, Integer[] expected) {
        // ========> Runtime error happens here. <=========
        this.inputList1 = li1;
        this.inputList2 = li2;
        this.expectedList = expected;
    }

    @Parameterized.Parameters
    public static Collection testCases() {
        return Arrays.asList(new Object[][][] {
            {{1,1,1}, {2,2,2}, …
Run Code Online (Sandbox Code Playgroud)

java parameterized

4
推荐指数
1
解决办法
5282
查看次数

参数化查询:检查字段是否在SELECT语句中的值数组中

我正在尝试将参数化查询配置为以下效果:

SELECT field1 FROM myTable WHERE field2 IN (1,2,3,4)
Run Code Online (Sandbox Code Playgroud)

我正在使用的数据库是Postgres.

此查询成功运行未参数化,但我想使用带有JdbcTemplate的参数化查询来填充有效field2值(整数)的列表.

尝试不同的值var("1,2,3,4","[1,2,3,4]","{1,2,3,4}",或"(1,2,3,4)"上查询),我试过的变化:

myJdbcTemplate.query("SELECT field1 FROM field2 IN (?)", new Object[]{ var })
Run Code Online (Sandbox Code Playgroud)

myJdbcTemplate.query("SELECT field1 FROM field2 IN (?::integer[])", new Object[]{ var })
Run Code Online (Sandbox Code Playgroud)

并且

myJdbcTemplate.query("SELECT field1 FROM field2 IN ?::integer[]", new Object[]{ var })
Run Code Online (Sandbox Code Playgroud)

另外,描述如何参数化查询的资源也非常有用.

所有这些查询抛出PSQLExceptions,指示操作符失败或类型不匹配 - 这似乎是合理的,因为我无法弄清楚如何参数化查询.

java sql postgresql jdbc parameterized

3
推荐指数
1
解决办法
3984
查看次数

如何更新SQL中的选择性字段(保留一些不变)?

我想用两个日期更新记录,如果我没有要更新的新值,则保留现有数据.

这是一个示例表记录:

id  last_foo    last_bar
--  ----------  ----------
 1  2010-05-30  2010-05-30
Run Code Online (Sandbox Code Playgroud)

我正在使用的查询:

UPDATE sampledates
   SET last_foo = @LastFoo, 
       last_bar = @LastBar
 WHERE id = @ID;
Run Code Online (Sandbox Code Playgroud)

如果我可以为null的日期时间 LastFoo或者LastBar是空的,我想离开现有的SQL值按原样,否则更新.

例如,假设我使用以下值更新此记录(这是C#但适用任何语言):

DateTime? LastFoo = new DateTime('2010-06-04');
DateTime? LastBar = null;
Run Code Online (Sandbox Code Playgroud)

我希望记录为:

id  last_foo    last_bar
--  ----------  ----------
 1  2010-06-04  2010-05-30
Run Code Online (Sandbox Code Playgroud)

我知道如果值为null,我可以改变我的查询文本以省略第二列,但我想知道是否有一种方法可以保持查询原样并指定我不更改指定的列.

sql t-sql parameterized

3
推荐指数
2
解决办法
6351
查看次数

输入清理和参数化查询是否互斥?

我正在更新一些不能正确处理用户输入的遗留代码.该代码确实进行了最少量的清理,但未涵盖所有已知威胁.

我们的新代码使用参数化查询.据我了解,查询是预编译的,输入被简单地视为无法执行的数据.在这种情况下,没有必要进行消毒.是对的吗?

换句话说,如果我在这个遗留代码中参数化查询,是否可以消除它当前的清理工作?或者我在参数化之上缺少一些额外的消毒效益?

sql database language-agnostic sanitization parameterized

3
推荐指数
2
解决办法
2038
查看次数

Java:参数化Map对象

我有以下全局变量:

private Map<String,List<String>> network;
Run Code Online (Sandbox Code Playgroud)

我在我的构造函数中实例化它,如下所示:

network = new Hashtable<String,ArrayList<String>>();
Run Code Online (Sandbox Code Playgroud)

上面的实例化不会编译.显然,当我对Map进行参数化时,我必须声明它是一个专门从String到ArrayList的映射,而不是使用更通用的List?有关为何必须这样做的任何见解?

java polymorphism parameterized

3
推荐指数
1
解决办法
232
查看次数

Teamcity - 参数化构建

有没有办法在团队城市中配置参数化构建?

我需要在实际触发构建之前传递一些参数.我有一个项目的多个版本,我需要每次我的构建触发时手动传递发布版本(它不是CI版本)

然后我会在我的构建中使用此发行版本.

teamcity continuous-integration build parameterized

3
推荐指数
1
解决办法
768
查看次数

在clojure中,如何将列表传递给参数化函数(及更多)

说我有功能:

(defn foo [something & otherthings]
  (println something)
  (println otherthings))
Run Code Online (Sandbox Code Playgroud)

评估

(foo "ack" "moo" "boo")
Run Code Online (Sandbox Code Playgroud)

给我 :

ack                                                               
(moo boo) 
Run Code Online (Sandbox Code Playgroud)

如果我想用列表调用foo怎么办?

(foo "ack" (list "moo" "boo"))
Run Code Online (Sandbox Code Playgroud)

得到

ack                                                            
(moo boo) 
Run Code Online (Sandbox Code Playgroud)

代替

ack                                            
((moo boo)) 
Run Code Online (Sandbox Code Playgroud)

有没有办法在不改变foo的情况下做到这一点?

rest clojure parameterized

3
推荐指数
1
解决办法
126
查看次数

带参数的DataSet查询在报表生成器中不起作用

下图显示了查询及其没有变量的结果:

在此输入图像描述

下一个显示带有变量和不同结果的相同查询:

在此输入图像描述

这是如何在查询执行之前设置参数:

在此输入图像描述

我也试过设置参数没有''但它产生相同的结果.

关于发生了什么的任何线索?任何帮助将不胜感激.

注意:DBMS是MySql

mysql reportbuilder parameterized dataset

3
推荐指数
1
解决办法
1万
查看次数

getRequests()必须返回一个Iterable数组

我的代码:

@RunWith(Parameterized.class)                                                                              
public class FreshResultCompareRunner2 {                                                                   


    //This is called before @BeforeClass !                                                                 
    @Parameterized.Parameters                                                                              
    public static Collection getRequests() throws IOException {                                            
        injector = Guice.createInjector(new MainModule());                                                 
        initStaticFromInjector();                                                                          
        initTestInput();                                                                                   
        return OrganizeTestParameterizedInput();                                                           
    }                                                                                                      


    private static void initTestInput() throws IOException {                                               

    }                                                                                                      

    private static Collection OrganizeTestParameterizedInput() {                                           

        Object[] objectMatrix = new Object[100];                                                
        for (int i = 0; i < 100; i++) {                                                         
            objectMatrix[i] = i;                                                                           
        }                                                                                                  
        return Arrays.asList(objectMatrix);                                                                
    }                                                                                                      
Run Code Online (Sandbox Code Playgroud)

返回以下异常:

getRequests() must return an Iterable of arrays

我如何运行参数化junit int只增加输入参数?

说运行相同的测试i=0 ...100

更新 …

java testing junit unit-testing parameterized

3
推荐指数
1
解决办法
2858
查看次数

参数化的junit测试,包含多个测试

参数化测试很好,可以将不同的数据输入到测试中。但是,我创建了一个示例计算器,希望为其创建参数化测试。但是,我发现您只能为一个测试创建1组参数化数据。

我创建了参数化测试,以将2个数字与预期结果相加。此数据将无法与减法一起使用,因为预期结果将有所不同。

是否可以为每个测试的加,减,乘和除设置参数化数据?

非常感谢您的任何建议,

@RunWith(Parameterized.class)
public class CalculatorModelPresenterTest {

    private CalculatorModel mCalculatorModel;

    /* Array of tests */
    @Parameterized.Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][]{
                {3.0, 4.0, 7.0},
                {4.0, 3.0, 7.0},
                {8.0, 2.0, 10.0},
                {-1.0, 4.0, 3.0},
                {3256.0, 4.0, 3260.0}
        });
    }

    private double mNumberOne;
    private double mNumberTwo;
    private double mExpectedResult;

    /* CONSTRUCTOR THAT ASSIGNS THE FIELDS WITH THE TEST DATA */
    public CalculatorModelPresenterTest(double numberOne, double numberTwo, double expectedResult) {
        mNumberOne = numberOne;
        mNumberTwo = numberTwo;
        mExpectedResult = expectedResult; …
Run Code Online (Sandbox Code Playgroud)

java junit parameterized junit4

3
推荐指数
2
解决办法
3489
查看次数