- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有可能为 Java 程序定义一些测试数据,使其易于人类阅读并以编程方式解析为相关函数调用和数据元素。如果不可能在 Java 中实现,我愿意为此使用 Scala。被测代码是 java 代码,不会移植到 Scala。
interface someInterface {
class X {
// the member variables will always either
// be enums or intrinsic types
private int a;
public int a() { return this.a; };
public void a(int a) {this.a = a; };
private double b;
public double b() { return this.b; };
public void b(double b) {this.b = b; };
private String c;
public String c() { return this.c; };
public void c(String c) {this.c = c; };
}
enum A {
A_1,
A_2
}
class Y {
// assume setters and getters as per X above
private A a;
private double b;
private String c;
private Z[] z;
}
class Z {
private int a;
private double b;
private String c;
}
Y function1(X x, String s);
}
public void boo() {
String[] testData = {
/* how can I specify this array so that
coo(...) can be called as below
would I be better off defining this
test code in Scala?
the classes and interfaces above:
someInterface, A, X, Y and Z are in Java
and will not be ported to Scala */
};
coo(testData);
}
public void coo(String[] testData) {
/* this function will know how to:
a) parse testData
b) use reflection to call
someInterface.functionXXX with parameters
as specified in testData
c) construct the return result as specified
in testData and compare against actual
return result */
}
}
最佳答案
为此,您可以使用 JUnit 4
并使用 Parameterized
类运行。
像这样创建一个测试类:
@RunWith(Parameterized.class)
public class MyTest
{
private String s;
private SomeInterface.X x;
private SomeInterface someInterface;
@Parameters
public static Collection<Object[]> prepareData()
{
Collection<Object[]> args = new ArrayList<Object[]>();
args.add(new Object[]{"org.some.thing.Impl", 1, 2.6,"Hello", "World"});
args.add(new Object[]{"org.some.thing.Impl", 2, 2.7,"Goodbye", "World"});
args.add(new Object[]{"org.some.thing.Impl", 3, 2.8,"Hello", "Universe"});
args.add(new Object[]{"org.some.thing.Impl2", 4, 2.9,"Goodbye", "Universe"});
return args;
}
public MyTest(Object[] args)
{
String someInterfaceImplementation = args[0].toString();
someInterface = null;
int a = (Integer) args[1];
double b = (Double) args[2];
String c = (String) args[3];
s = (String) args[4];
x = new SomeInterface.X();
x.a(a);
x.b(b);
x.c(c);
}
@Test
public void testSomething()
{
someInterface.function1(x, s);
}
}
解释:
@RunWith(Parameterized.class)
告诉 JUnit 框架运行,向测试类询问参数,并使用这些参数运行类中的所有测试。
它需要 Object[]
的 Collection
。每个 Object[]
都通过反射传递给此类的构造函数。
prepareData
- 提供您要测试的所有场景。
MyTest(Object[] args)
在对特定参数集运行所有测试之前填充此类的成员。重要的是要注意 'someInterface' 只初始化一次 - 对于每个参数集。如果您为同一参数集添加更多测试,您可能需要重新初始化它。
testSomething()
运行您的测试。它将针对 prepareData
提供的每个 Object[]
运行一次。并且它保证在 MyTest(Object[] args)
执行后运行(呃,就像你在这里有任何选择一样)
关于java - 为 Java 代码定义测试数据 - 简单 - 也许使用 Scala?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6452787/
我尝试理解[c代码 -> 汇编]代码 void node::Check( data & _data1, vector& _data2) { -> push ebp -> mov ebp,esp ->
我需要在当前表单(代码)的上下文中运行文本文件中的代码。其中一项要求是让代码创建新控件并将其添加到当前窗体。 例如,在Form1.cs中: using System.Windows.Forms; ..
我有此 C++ 代码并将其转换为 C# (.net Framework 4) 代码。有没有人给我一些关于 malloc、free 和 sprintf 方法的提示? int monate = ee; d
我的网络服务器代码有问题 #include #include #include #include #include #include #include int
给定以下 html 代码,将列表中的第三个元素(即“美丽”一词)以斜体显示的 CSS 代码是什么?当然,我可以给这个元素一个 id 或一个 class,但 html 代码必须保持不变。谢谢
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我试图制作一个宏来避免重复代码和注释。 我试过这个: #define GrowOnPage(any Page, any Component) Component.Width := Page.Surfa
我正在尝试将我的旧 C++ 代码“翻译”成头条新闻所暗示的 C# 代码。问题是我是 C# 中的新手,并不是所有的东西都像 C++ 中那样。在 C++ 中这些解决方案运行良好,但在 C# 中只是不能。我
在 Windows 10 上工作,R 语言的格式化程序似乎没有在 Visual Studio Code 中完成它的工作。我试过R support for Visual Studio Code和 R-T
我正在处理一些报告(计数),我必须获取不同参数的计数。非常简单但乏味。 一个参数的示例查询: qCountsEmployee = ( "select count(*) from %s wher
最近几天我尝试从 d00m 调试网络错误。我开始用尽想法/线索,我希望其他 SO 用户拥有可能有用的宝贵经验。我希望能够提供所有相关信息,但我个人无法控制服务器环境。 整个事情始于用户注意到我们应用程
我有一个 app.js 文件,其中包含如下 dojo amd 模式代码: require(["dojo/dom", ..], function(dom){ dom.byId('someId').i
我对“-gencode”语句中的“code=sm_X”选项有点困惑。 一个例子:NVCC 编译器选项有什么作用 -gencode arch=compute_13,code=sm_13 嵌入库中? 只有
我为我的表格使用 X-editable 框架。 但是我有一些问题。 $(document).ready(function() { $('.access').editable({
我一直在通过本教程学习 flask/python http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-wo
我想将 Vim 和 EMACS 用于 CNC、G 代码和 M 代码。 Vim 或 EMACS 是否有任何语法或模式来处理这种类型的代码? 最佳答案 一些快速搜索使我找到了 this vim 和 thi
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve this
这个问题在这里已经有了答案: Enabling markdown highlighting in Vim (5 个回答) 6年前关闭。 当我在 Vim 中编辑包含 Markdown 代码的 READM
我正在 Swift3 iOS 中开发视频应用程序。基本上我必须将视频 Assets 和音频与淡入淡出效果合并为一个并将其保存到 iPhone 画廊。为此,我使用以下方法: private func d
pipeline { agent any stages { stage('Build') { steps { e
我是一名优秀的程序员,十分优秀!