在JUnit4中使用参数化测试时,有没有办法设置我自己的自定义测试用例名称?
我想将默认值 - 更改为[Test class].runTest[n]有意义的内容.
理论和参数化测试之间有什么区别?
在创建测试类时,我对实现差异不感兴趣,只是当你选择一个而不是另一个时.
目前,我必须为每个我想用几个不同输入测试的方法创建一个参数化测试类.有没有办法在一个文件中添加它?
现在有CalculatorTestAdd.java一组参数用于检查Add()功能是否正常工作.我是否有可能将此连接"连接"到该Add()函数并为该Subtract()方法创建一个额外的集合并在同一测试类中添加此方法,从而导致一个文件被调用CalculatorTest.java?
.Net中的参数化查询在示例中总是如下所示:
SqlCommand comm = new SqlCommand(@"
SELECT *
FROM Products
WHERE Category_ID = @categoryid
",
conn);
comm.Parameters.Add("@categoryid", SqlDbType.Int);
comm.Parameters["@categoryid"].Value = CategoryID;
Run Code Online (Sandbox Code Playgroud)
但是我碰到了一堵砖墙试图做到以下几点:
SqlCommand comm = new SqlCommand(@"
SELECT *
FROM Products
WHERE Category_ID IN (@categoryids)
OR name LIKE '%@name%'
",
conn);
comm.Parameters.Add("@categoryids", SqlDbType.Int);
comm.Parameters["@categoryids"].Value = CategoryIDs;
comm.Parameters.Add("@name", SqlDbType.Int);
comm.Parameters["@name"].Value = Name;
Run Code Online (Sandbox Code Playgroud)
哪里
什么是正确的语法?
我一直试图弄清楚如何在Junit4中与PowerMock一起运行参数化测试.问题是要使用PowerMock,你需要用你的测试类来装饰
@RunWith(PowerMockRunner.class)
Run Code Online (Sandbox Code Playgroud)
并使用参数化测试你必须装饰
@RunWith(Parameterized.class)
Run Code Online (Sandbox Code Playgroud)
从我所看到的,他们似乎相互排斥!?这是真的?有没有办法解决?我试图在运行PowerMock的类中创建一个参数化类; 这样的事情:
@RunWith(PowerMockRunner.class)
class MyTestClass {
@RunWith(Parameterized.class)
class ParamTestClass {
// Yadayada
}
}
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这并没有太大的好处...... ParamTestClass仍然没有PowerMock支持(也许不是那么令人惊讶)...而且我有点想法,所以任何帮助都非常感谢!
更新: 对于未来的googlers也会看到:在没有RunWith的情况下使用PowerMock?
我@Parameterized在很多情况下使用多个排列运行测试.这非常有效并且使测试代码本身变得简单和干净.
但是有时候我想让一些测试方法只运行一次,因为它们没有使用参数,JUnit是否有办法将测试方法标记为"singleton"或"run-once"?
注意:这不涉及在Eclipse中运行单个测试,我知道如何做到:)
我在詹金斯有一份工作(称之为BIGJOB); 几个构建步骤是使用参数化触发器插件触发其他作业的构建(称为SMALLJOB),然后等待它们完成.我需要做的是从SMALLJOB上的触发构建中检索工件.
最初,我以为我可以使用Copy Artifact Plugin从触发的SMALLJOB的"last build"中检索工件.当一次只运行一个SMALLJOB时,这确实可以正常工作.
但是我运行了多个BIGJOB,都触发了多个SMALLJOB,因此使用"last build"是不可靠的,同时两个SMALLJOB完成.
是否有更可靠的方法从特定下游作业中获取工件?如果我可以获得构建号,我可以使用curl来获取构件.
我不确定我想做什么是可能的,但如果是的话,我想知道如何做.基本上,我想创建一个Map,其中键是一个class(java.lang.Class),该条目的值是该类的一个实例.目前我有
private Map<Class<?>, Object> myMap = new HashMap<Class<?>, Object>();
Run Code Online (Sandbox Code Playgroud)
但是,这意味着任何Object都可以放在Map中.如果有可能,我想制作它,因此只能将键中的类的实例放置在地图中.有没有办法使用?在Class上进行参数化以确保这一点?
此外,我发现在做这样的事情时可能会有内存泄漏.我不确定我是否完全理解这是怎么发生的.我只会将单个对象粘贴到地图中,那么是否仍会出现内存泄漏问题?如果是这样,我该如何预防呢?
我在詹金斯有两份工作:
build master - 这会构建代码并创建工件deploy master - 这会部署工件目前,deploy master使用"最新成功构建"具有"从另一个项目复制工件"构建步骤.
我想将此步骤从"最新成功构建"更改为"由构建参数指定",以便我可以在部署时选择特定构建,而无需deploy master每次都修改作业配置.
首先,我改为"由构建参数指定".
然后我选中了"此项目已参数化"旁边的框,并为其添加了一个字符串参数BUILD_SELECTOR.
然后我选择了构建并输入47了build master作业中的内部版本号输入.
另外我试过api电话
$.ajax({
type: 'POST',
url: 'https://jenkins/job/deploy%20master/build?token=abc7f5abc0c45abcea0646ed858abcde&BUILD_SELECTOR=47'
});
Run Code Online (Sandbox Code Playgroud)
两次失败并输出以下内容:
Started by user styfle
[EnvInject] - Loading node environment variables.
Building in workspace C:\Jenkins\jobs\deploy master\workspace
ERROR: Unable to find a build for artifact copy from: build master
Started calculate disk usage of build
Finished Calculation of disk usage of build in …Run Code Online (Sandbox Code Playgroud) parameterized ×10
java ×7
junit ×5
junit4 ×3
jenkins ×2
.net ×1
deployment ×1
hudson ×1
parameters ×1
powermock ×1
sql ×1