java - 同一 JUnit 测试中的 assertTrue 和 assertFalse

标签 java junit junit4 assert

这是我的第一篇文章!

我想在使用 JUnit4 的同一测试中同时使用 assertTrue(boolean)assertFalse(boolean)。我正在使用参数化,所以我想包含将无法通过测试的参数,以验证它们是否确实失败。

我正在测试的方法接受一个字符串,检查该字符串是否采用可接受的货币格式(只有数字,没有字母,小数点后最多 2 位数字),并返回一个带有 2 个键的 HashMap:VALID,它是一个 boolean 值,表示字符串作为货币的有效性,FORMATTING 是一个添加到原始有效字符串的字符串,以确保所有有效字符串以小数点结尾,并且其后正好是 2 位数字。无效的字符串将不会被格式化。

这是我的代码:

@RunWith(value = Parameterized.class)
public class CheckCurrencyFormatTest {

private String input;
private String output;

@Parameters
 public static Collection<String[]> data() {
   String[][] data = {
        {"1", "1.00"}               //return true
        ,{"1.", "1.00"}             //return true
        ,{"1.0", "1.00"}            //return true
        ,{"1.00", "1.00"}           //return true
        //,{"1.000", "1.000"}         //return false
        //,{"m","m"}                  //return false
    };
   return Arrays.asList(data);
 }

public CheckCurrencyFormatTest( String input, String output) {
    this.input = input;
    this.output = output;
}

@Test
public void testCheckString() {
    CheckCurrencyFormat ccf = new CheckCurrencyFormat();
    HashMap hm;
    boolean valid;
    String resultString;

    valid = false;
    resultString = "";
    hm = ccf.checkString(input);
    for (Object key : hm.keySet()) {
        if ("VALID".equals(key.toString())){
            valid = Boolean.parseBoolean(hm.get(key).toString());
        }
        if ("FORMATTING".equals(key.toString())){
            System.out.println(input + " and add " + hm.get(key).toString());
            resultString = input+(hm.get(key).toString());
        }
    }
    assertTrue(valid);
    //assertFalse(valid);
    assertEquals(output, resultString);
}

测试运行成功,以下行被注释掉:,{"1.000", "1.000"} and ,{"m","m"} and assertFalse(有效);

谢谢你。

最佳答案

添加“预期结果”字段

private String input;
private String output;
private boolean expectedResult;

@Parameters
 public static Collection<Object[]> data() {
   Object[][] data = {
        {"1", "1.00", true}               //return true
       ,{"1.", "1.00", true}             //return true
        ,{"1.0", "1.00", true}            //return true
        ,{"1.00", "1.00", true}           //return true
        ,{"1.000", "1.000", false}         //return false
        ,{"m","m", false}                  //return false
    };
   return Arrays.asList(data);
 }

在测试方法中:

assertTrue(valid == expectedResult);

关于java - 同一 JUnit 测试中的 assertTrue 和 assertFalse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19248949/

相关文章:

java - 向应用程序中的所有 Swing 文本组件添加上下文菜单

java - Netbeans 表示 observablearrayList 的 FXML 文件中不存在类,但它确实存在

java - Dockerfile 中的打包步骤是下载依赖项,尽管前面有一个步骤来解决依赖项

java - 方法中的 JUnit Mockito 对象初始化

java - JPA XML 映射文件可以很好地解析,但在作为 JUnit 测试运行时无法解析

unit-testing - Junit:拆分集成测试和单元测试

java - Hibernate 不会将鉴别器列添加到表中

java - Spring JUnit 文件加载问题

java - 我如何在我的 Java/Maven/Surefire 项目中利用 CircleCI 并行性?

java - 在运行单个测试用例时,是否有一种好的方法来进行测试套件的初始化?