在Hudson/Jenkins中,是否可以使用String参数替换Subversion模块存储库URL中的整个字符串?我不想只更换版本或类似的东西,我想替换整个网址.
所以,当我运行构建时,我会得到一个URL的提示,我会写一些像"http://scm.work.corp/svn/com.work.package/tags/project-4.0.0 .RELEASE"它会检查并构建它.
能够替换"com.work.package"和"project-4.0.0.RELEASE"部分将是可以接受的.我基本上希望它是一个可以构建任何版本的工作.
我有一个带有一堆重载运算符的类:
public static double[,] operator +(Matrix matrix, double[,] array)
public static double[,] operator -(Matrix matrix, double[,] array)
public static double[,] operator *(Matrix matrix, double[,] array)
Run Code Online (Sandbox Code Playgroud)
对于所有这些我想测试操作数为null.我有一个NUnit测试:
public void MatrixOperatorOperandIsNullThrows(Func<Matrix, double[,], double[,]> op)
{
Matrix m = null;
var right = new double[,] {{1, 1}, {1, 1}};
Assert.Throws<ArgumentException>(() => op(m, right));
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能为每个运营商传递一个lambda (l,r) => l + r?
我很恼火地在参数化文档中找到"当运行参数化测试类时,为测试方法和测试数据元素的交叉产品创建实例." 这意味着构造函数对于每个单独的测试运行一次,而不是在运行所有测试之前运行.我有一个昂贵的操作(1-5秒),我把它放在构造函数中,现在操作重复了太多次,不必要地减慢了整个测试套件.只需一次操作即可设置所有测试的状态.如何使用参数化测试的一个实例运行多个测试?
我有一些代码利用参数化查询来防止注入,但我还需要能够动态构造查询,而不管表的结构如何.这样做的正确方法是什么?
这是一个例子,说我有一个表名列,地址,电话.我有一个网页,我在其中运行显示列并使用它们作为选项填充选择下拉列表.
接下来,我有一个名为Search的文本框.此文本框用作参数.
目前我的代码看起来像这样:
result = pquery('SELECT * FROM contacts WHERE `' + escape(column) + '`=?', search);
不过,我从中得到了一种icky的感觉.我使用参数化查询的原因是为了避免使用转义.此外,转义可能不是为逃避列名而设计的.
我怎样才能确保这个按照我的意图运作?
编辑: 我需要动态查询的原因是架构是用户可配置的,我不会修复任何硬编码的东西.
如何使用反射在Java中创建通用参数化类?
我有
public class SomeClass<T> {
public SomeClass<T>() {
}
}
Run Code Online (Sandbox Code Playgroud)
我需要一个它的实例.
我尝试过变种
Class c = Class.forName("SomeClass");
Run Code Online (Sandbox Code Playgroud)
但是找不到允许我获得适当类型实例的语法,比如说
SomeType instance = (SomeType)Class.forName("SomeClass<SomeType>").createInstance();
Run Code Online (Sandbox Code Playgroud)
那么,我该怎么做呢?
是否可以将maven发布插件与多模块项目一起使用,其中一些模块间依赖项是使用父pom中的参数指定的?
当我尝试调用release:prepare我收到以下错误:
[错误]未能执行目标org.apache.maven.plugins:行家释放小插件:2.1:准备(默认CLI)项目森林父母:版本无法更新:$ {some.version} - > [帮助1]
这是我的插件定义:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.1</version>
<configuration>
<goals>deploy</goals>
<tagBase>https://svn.domain.com/svn/project/tags</tagBase>
<autoVersionSubmodules>true</autoVersionSubmodules>
<tagNameFormat>@{project.version}</tagNameFormat>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
提前致谢!
IDE: PyCharm Community Edition 3.1.1
Python: 2.7.6
我使用DDT进行测试参数化http://ddt.readthedocs.org/en/latest/example.html
我想从PyCharm中的测试类中选择并运行参数化测试方法- >参见示例:
from unittest import TestCase
from ddt import ddt, data
@ddt
class Test_parameterized(TestCase):
def test_print_value(self):
print 10
self.assertIsNotNone(10)
@data(10, 20, 30, 40)
def test_print_value_parametrized(self, value):
print value
self.assertIsNotNone(value)
Run Code Online (Sandbox Code Playgroud)
当我导航到test_print_value代码中的第一个测试方法并点击ctrl+ Shift+ F10(或使用Run Unittest test_print...上下文菜单中的选项)时,执行测试.
当我尝试使用参数化测试时,我得到错误:
Test framework quit unexpectedly
Run Code Online (Sandbox Code Playgroud)
输出包含:
/usr/bin/python2 /home/s/App/pycharm-community-3.1.1/helpers/pycharm/utrunner.py
/home/s/Documents/Py/first/fib/test_parametrized.py::Test_parameterized::test_print_value_parametrized true
Testing started at 10:35 AM ...
Traceback (most recent call last):
File "/home/s/App/pycharm-community-3.1.1/helpers/pycharm/utrunner.py", line 148, …Run Code Online (Sandbox Code Playgroud) 我有一个BaseTest类,它包含几个测试.每个测试都应该针对我列出的每个配置文件执行.
我想过使用参数化值,例如:
@RunWith(Parameterized.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
// @ActiveProfiles("h2-test") // <-- how to iterate over this?
public abstract class BaseTest {
@Autowired
private TestRepository test;
// to be used with Parameterized/Spring
private TestContextManager testContextManager;
public BaseTest(String profile) {
System.setProperty("spring.profiles.active", profile);
// TODO what now?
}
@Parameterized.Parameters
public static Collection<Object[]> data() {
Collection<Object[]> params = new ArrayList<>();
params.add(new Object[] {"h2-test" });
params.add(new Object[] {"mysql-test" });
return params;
}
@Before
public void setUp() throws Exception {
this.testContextManager = new TestContextManager(getClass());
this.testContextManager.prepareTestInstance(this);
// maybe …Run Code Online (Sandbox Code Playgroud) 我正在运行这段代码,并意识到该getAllParameters()方法由于某种原因运行了两次。由于静态字段enumMap是在该方法之外初始化的,因此它会被填充两次,这会导致重复元素并使我正在运行的测试失败。
我认为enumMap在方法内部初始化可以解决问题,因为当该方法第二次运行时地图确实会重置。
尽管这解决了问题,但我想知道为什么在运行 Maven Test 时会发生这种情况?我尝试了参数的数量,认为这可能会影响方法运行的次数,但它似乎只运行了两次。
@RunWith(Parameterized.class)
public class MyTest {
private static Map<String, List<Class<? extends LocalizedJsonEnum>>> enumMap = new HashMap<>();
@Parameter
@SuppressWarnings({"WeakerAccess", "unused"})
public Class<? extends LocalizedJsonEnum> currentEnum;
@Parameter(value = 1)
@SuppressWarnings({"WeakerAccess", "unused"})
public String currentClassName;
/**
* Generate a list of all the errors to run our test against.
*
* @return the list
*/
@Parameters(name = "{1}.class")
public static Collection<Object[]> getAllParameters() throws Exception {
Collection<Object[]> parameters = new LinkedList<>();
Reflections reflections …Run Code Online (Sandbox Code Playgroud) 我想为一个类似数据库的小型应用程序编写一个测试。此应用程序使用查询,查询应返回正确的结果。这在 JUnit 5 中很容易实现,比如
@BeforeEach
void before() {
database = prepareDatabase();
}
@Test
void testQuery1() {
assertThat(database.query("query1")).isEqualTo("result1");
}
@Test
void testQuery2() {
assertThat(database.query("query2")).isEqualTo("result2");
}
....
Run Code Online (Sandbox Code Playgroud)
现在我想添加优化开关(例如查询优化器或数据库索引)。无论运行优化开关如何,查询都应该返回相同的结果(优化应该只改变效率而不是结果)。
对于测试,这意味着我想为其他一些实现prepareDatabase()(例如,一个带有优化器,一个带有索引,一个什么都没有)运行相同的方法。
我还没有找到合适的扩展名。我想为每个优化设置复制整个类或提供来自共享父类的方法。然而,这感觉不像 JUnit 5 完成这项任务的方式。也许有人可以给我指出一个可以帮助我解决这个问题的功能?
parameterized ×10
java ×5
junit ×3
unit-testing ×3
maven ×2
c# ×1
generics ×1
hudson ×1
jenkins ×1
junit4 ×1
junit5 ×1
maven-3 ×1
nunit ×1
pycharm ×1
python ×1
python-2.7 ×1
reflection ×1
spring ×1
spring-boot ×1
svn ×1
version ×1